Выбор часового пояса с помощью select

315
08 августа 2017, 17:13

Здравствуйте! Есть сайт где администратор сам может указывать часовой пояс, как это показано на картинке. После этого на сайте отображается время в указанном часовом поясе и все операции(регистрация, оплата и т.д.) заносятся в базу в этом часовом поясе. Как это можно реализовать? Может есть готовые библиотеки? Подскажите, пожалуйста.

Answer 1

А можно как-то вывести список всех временных зон с помощью стандартных функции 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); // получить значение Часы из Московского времени
Answer 2

Могу предложить такой вариант. У вас есть выпадающий список, где администратор выбирает часовой пояс и он заносится в date_default_timezone_set("ваше часовой пояс"); и сохраняется(допустим с помощью file_get_contents в отдельный файл), а потом просто подключается в нужный файлах с помощью include. И не надо возни с отдельным скриптовыми преобразованиями как в комментарии выше. Ведь точно не извество сразу, какой часовой пояс.

Тут вы можете посмотреть поддерживаемые временные зоны для функции

READ ALSO
Как реализовать каррирование в PHP

Как реализовать каррирование в PHP

Пусть у меня есть анонимная функция

612
Foreach реализация функций php

Foreach реализация функций php

Доброго времени суток, если имеется массив

449
Почему не используется файл bootstrap.php.cache в Symfony3 под PHP7?

Почему не используется файл bootstrap.php.cache в Symfony3 под PHP7?

Я заметил, что в файле web/appphp дистрибутива Symfony Standard Edition есть следующая конструкция:

382
Выборка из mysql по дате

Выборка из mysql по дате

Есть 2 переменных которых получаем из формы называются они $start_date и $end_dateЕсть запрос к базе

385