Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод времени с учетом часового пояса.
Форумы портала PHP.SU » » Вопросы новичков » Вывод времени с учетом часового пояса.

Страниц (1): [1]
 

1. St. - 17 Августа, 2016 - 15:25:21 - перейти к сообщению
Интересует что-то типа сайты (php) и часовые пояса.
Разработка веб-приложений с поддержкой временных зон.
Как правильно решается эта проблема?
Э... Э... Какую книгу почитать? Что такое?
2. St. - 18 Августа, 2016 - 16:16:30 - перейти к сообщению
Вот еще темы:
Вывод даты с учетом часового пояса пользователя: http://www.php.su/forum/topic.ph...1&topic=7677
Дата+время и часовой пояс: http://forum.php.su/topic.php?fo...1&topic=6058
Решение проблемы часовых поясов в веб-приложении: https://habrahabr[dot]ru/post/124297/
Функции для работы с датой и временем в PHP: http://www.php.su/functions/?cat=datetime
Правильный взгляд на временные зоны в PHP: https://phptime[dot]ru/php-performan[dot][dot][dot]-zony-v-php[dot]html
Хранение даты в mysql с учетом часового пояса: https://habrahabr[dot]ru/post/69614/
Изменение текущего часового пояса в MySQL, PostgreSQL и в скриптах : https://www[dot]opennet[dot]ru/tips/1810

Еще о дате и времени.
Книга Д. Котеров и А. Костарев. PHP 5, 2-е издание. стр. 362.
3. Contr - 18 Августа, 2016 - 16:24:38 - перейти к сообщению
В чем вопрос?
4. St. - 18 Августа, 2016 - 16:46:52 - перейти к сообщению
Contr пишет:
В чем вопрос?

Написан на php файловый архив. Пользователи заходят на сайт, регистрируются и выкладывают свои файлы. Есть желание добавить дату размещения файлов в архиве.
Вопрос как это правильно сделать с учетом часовых поясов?
Алгоритм можно?

Вот это мне понравилось:
Цитата:
Правильный взгляд на временные зоны в PHP: https://phptime[dot]ru/php-performan[dot][dot][dot]-zony-v-php[dot]html

Предпочтение отдаю хранить время загрузки файлов на сервер в формате UTC +00:00
Для этого чтобы PHP это делал, необходимо в php.ini установить date.timezone="UTС"
Пока так... Не понял
5. kuller - 18 Августа, 2016 - 19:58:38 - перейти к сообщению
[quote=St.][/quote]

Выше дали же ссылки.... на первой ссылке получить ответ можно

цитирую:
PHP:
скопировать код в буфер обмена
  1.  
  2. $timedifference = -5; // настройка времени. -5 - минус 5 часов либо 5 - плюс пять часов и т.к.
  3. $time_client = $timedifference * 3600;
  4. $real_time = time() + $time_client;
  5. echo strftime('%d.%m.%Y %H:%M:%S', $real_time);
  6.  
6. St. - 18 Августа, 2016 - 20:19:56 - перейти к сообщению
Цитата:
Выше дали же ссылки.... на первой ссылке получить ответ можно

Завтра посмотрю, нет времени.
Спасибо.
7. St. - 19 Августа, 2016 - 13:43:55 - перейти к сообщению
Еще раз спасибо. Круто

(Добавление)
Извините какое UTC в Украине?

Здесь написано что в Украине зимой UTC+02:00, а летом UTC+03:00
https://ru[dot]wikipedia[dot]org/wiki/Время_на_Украине
http://travel[dot]tochka[dot]net/7332-to[dot][dot][dot]-vremya-v-kieve/

Поиск в google с запросом: Что такое UTC

Результат:
UTC (СГВ) Универсальное координированное время, базирующееся на атомном отсчёте времени.
UTC - это наследие времени по Гринвичу (GMT, солнечное время на 0-вом меридиане),
иногда ошибочно именуемое GMT. Время по UTC не переводится зимой и летом.

КлЯдЬ! Так какое UTC в Украине? Не понял
Помне, так это правильно что UTC не переводится зимой и летом.

Так как правильно?
Извините.
8. Мелкий - 19 Августа, 2016 - 16:25:26 - перейти к сообщению
St. пишет:
Так какое UTC в Украине?

Именно вот это:
St. пишет:
зимой UTC+02:00, а летом UTC+03:00

При том, только в текущий момент. С течением времени и локальных правовых актов часовые зоны могут изменяться, в том числе на неподходящие - мировые города одного меридиана могут относиться к разным смещениям по UTC и иметь разное локальное время.
И, сдаётся мне, вы не учли дробные смещения, вроде UTC+03:30 (Иран), UTC+4:30 (Афганистан).

В PHP уже давно в наличии классы DateTime, с поддержкой системной tzdate - т.е. нормальным определением перехода на летнее/зимнее время (если библиотеку обновлять, конечно).
PHP:
скопировать код в буфер обмена
  1. $date = new DateTime();
  2. echo 'In default tz '.$date->getTimezone()->getName().' now: ', $date->format('H:i:s P'),PHP_EOL;
  3. $date->setTimezone(new DateTimeZone('Europe/Kiev'));
  4. echo 'In '.$date->getTimezone()->getName().' now: ', $date->format('H:i:s P'),PHP_EOL;

http://php.net/manual/en/timezones.php
И по идее полезный http://ru2.php.net/manual/en/cla...ateformatter.php Не знаю, сам туда уже не влезал, как-то не попадалось задачи отображать локальное для пользователя время.
9. St. - 19 Августа, 2016 - 18:30:00 - перейти к сообщению
Цитата:
И, сдаётся мне, вы не учли дробные смещения, вроде UTC+03:30 (Иран), UTC+4:30 (Афганистан).


Я думаю это так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $timedifference = -5; // настройка времени. -5 - минус 5 часов либо 5 - плюс пять часов и т.к.
  2. $minutes = 30; // минуты.
  3. $time_client = $timedifference * 3600 + $minutes * 60;
  4. $real_time = time() + $time_client;
  5. echo strftime('%d.%m.%Y %H:%M:%S', $real_time);


Зачем Иран с Афганистаном... Меня интересует Россия, Украина, Беларуссия.

Цитата:
В PHP уже давно в наличии классы DateTime, с поддержкой системной tzdate - т.е. нормальным определением перехода на летнее/зимнее время (если библиотеку обновлять, конечно).

Меня пугает слово обновлять.

А получить время клиента (его время и часовой пояс) через js можно?
Если да, то как (где-то видел такой скрипт...)?

Дополнение.
Ссылка: http://www[dot]softtime[dot]ru/forum/rea[dot][dot][dot]p;id_theme=59914
CODE (htmlphp):
скопировать код в буфер обмена
  1. var d = new Date();
  2. alert(d); //уже покажет строку с датой и временем пользователя, и смещением зоны
  3. alert(d.getTimezoneOffset()); //это покажет разницу времени GMT и пользователя в минутах
10. St. - 20 Августа, 2016 - 17:25:54 - перейти к сообщению
closed

 

Powered by ExBB FM 1.0 RC1