Здравствуйте! Есть сайт где администратор сам может указывать часовой пояс, как это показано на картинке. После этого на сайте отображается время в указанном часовом поясе и все операции(регистрация, оплата и т.д.) заносятся в базу в этом часовом поясе. Как это можно реализовать? Может есть готовые библиотеки? Подскажите, пожалуйста.
А можно как-то вывести список всех временных зон с помощью стандартных функции php?
Да, можно. DateTimeZone::listIdentifiers -- timezone_identifiers_list — Возвращает численно индексированный массив со всеми идентификаторами временных зон
<?php
$timezone_identifiers = DateTimeZone::listIdentifiers();
for ($i=0; $i < 5; $i++) {
echo "$timezone_identifiers[$i]\n";
}
?>
Результат:
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Сам список всех timezones тут.
У меня в проекте было такое "костыльное решение", может поможет:
// Определяем какое у клиента Московское время
date_default_timezone_set("UTC"); // Устанавливаем часовой пояс по Гринвичу
$time = time(); // Вот это значение отправляем в базу
$time += 3 * 3600; // Добавляем 3 часа к времени по Гринвичу, чтобы привязывать пользователей к Московскому часовому поясу
//$cur_hour = date('d-m-Y, H:i:s', $time);
$cur_hour = date('H', $time); // получить значение Часы из Московского времени
Могу предложить такой вариант. У вас есть выпадающий список, где администратор выбирает часовой пояс и он заносится в
date_default_timezone_set("ваше часовой пояс"); и сохраняется(допустим с помощью file_get_contents в отдельный файл), а потом просто подключается в нужный файлах с помощью include. И не надо возни с отдельным скриптовыми преобразованиями как в комментарии выше. Ведь точно не извество сразу, какой часовой пояс.
Тут вы можете посмотреть поддерживаемые временные зоны для функции
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости