Googleデータマークアップにデータを認識させたい場合は、次のガイドラインに従う必要があることを学びました。
https://schema.org/openingHours
http://schema.org/OpeningHoursSpecification「有効な日付」が含まれています。これは一部のビジネスに非常に役立ちます。
https://schema.org/docs/search_results.html#q=hours
企業が結合テーブルと同じ時間を共有することを許可しない限り、主キーがなくても問題ありません。興味深いことに、最終的には組み合わせの数が有限になります。いくつになるかわかりません:p
私のプロジェクトの1つで、列を使用しました。
[uInt] business_id、[uTinyInt] day、[char(11)] timeRange
OpeningHoursSpecificationをサポートする場合は、validFromとvalidThroughを追加する必要があります。
時間範囲は次のようにフォーマットされます:hh:mm-hh:mm
これを解析する関数を次に示します。DB内で別々の列として保持している場合は、この関数を変更して、単一の開閉のみを解析することもできます。
私の経験から、1日に複数回許可するか、その日に明示的に閉鎖されているか、24時間または24時間年中無休で開いているかを判断する方法を許可することをお勧めします。私は、DBに欠落している日があった場合、その日は営業を終了したと言っていました。
/**
* parseTimeRange
* parses a time range in the form of
* '08:55-22:00'
* @param $timeRange 'hh:mm-hh:mm' '08:55-22:00'
* @return mixed ['hourStart'=>, 'minuteStart'=>, 'hourEnd'=>, 'minuteEnd'=>]
*/
function parseTimeRange($timeRange)
{
// no validating just parsing
preg_match('/(?P<hourStart>\d{1,2}):(?P<minuteStart>\d{2})-(?P<hourEnd>\d{1,2}):(?P<minuteEnd>\d{2})/', $timeRange, $matches);
return $matches;
}