Здравствуйте! Есть сайт где администратор сам может указывать часовой пояс, как это показано на картинке. После этого на сайте отображается время в указанном часовом поясе и все операции(регистрация, оплата и т.д.) заносятся в базу в этом часовом поясе. Как это можно реализовать? Может есть готовые библиотеки? Подскажите, пожалуйста.
А можно как-то вывести список всех временных зон с помощью стандартных функции 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
. И не надо возни с отдельным скриптовыми преобразованиями как в комментарии выше. Ведь точно не извество сразу, какой часовой пояс.
Тут вы можете посмотреть поддерживаемые временные зоны для функции
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я заметил, что в файле web/appphp дистрибутива Symfony Standard Edition есть следующая конструкция:
Есть 2 переменных которых получаем из формы называются они $start_date и $end_dateЕсть запрос к базе