What are the potential pitfalls of storing opening hours in a database and how can they be avoided?

One potential pitfall of storing opening hours in a database is not accounting for different time zones, which can lead to confusion for users in different locations. To avoid this issue, it is important to store opening hours in a standardized format, such as UTC, and convert them to the user's local time zone when displaying them.

// Storing opening hours in UTC format
$opening_hours = [
    'Monday' => [
        'open' => '08:00',
        'close' => '17:00'
    ],
    // Add opening hours for other days of the week
];

// Function to convert UTC opening hours to user's local time zone
function convertOpeningHoursToLocalTime($opening_hours, $timezone) {
    foreach ($opening_hours as $day => $hours) {
        $open = new DateTime($hours['open'], new DateTimeZone('UTC'));
        $open->setTimezone(new DateTimeZone($timezone));
        $opening_hours[$day]['open'] = $open->format('H:i');

        $close = new DateTime($hours['close'], new DateTimeZone('UTC'));
        $close->setTimezone(new DateTimeZone($timezone));
        $opening_hours[$day]['close'] = $close->format('H:i');
    }

    return $opening_hours;
}

// Example of converting opening hours to 'America/New_York' time zone
$opening_hours_local = convertOpeningHoursToLocalTime($opening_hours, 'America/New_York');