Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Часовой пояс и php

Опубликовано:

Здравствуйте. 

Подскажите, как сравнять часовой пояс форума и сервера?

из коробки в init.php стоит настройка

		/* Set timezone */
		date_default_timezone_set( 'UTC' );

При этом на форуме время правильное, но если в каком либо блоке написать 

echo date("H:i", time());

то время будет отставать на 3 часа

Если в эту переменную вставить 

date_default_timezone_set( 'Europe/Moscow' );

то время на форуме будет спешить на 3 часа, а time() будет впорядке.

Как сравнять время форума и time() ?

 

 

Рекомендованные сообщения

Опубликовано:
  • Автор

При этом, при установке часового пояса Москва в титле время правильное, а в общем - спешит

image.png.855f77c394ebb6c2858478d46b38c33c.png

Опубликовано:

Надо использовать не нативные функции, а класс форума \IPS\DateTime.

  • 4 года спустя...
Опубликовано:

Также перелопатил кучу инфы, но так и не смог разобраться. Понятно, что этот код виновен в отставании времени по Москве :)

/* Set timezone */
		date_default_timezone_set( 'UTC' );

Возможно siv1987 уже дал ответ и все всё поняли, но не я :) Куда и как использовать этот класс \IPS\DateTime.

Опубликовано:
40 минут назад, ovi8 сказал:

Также перелопатил кучу инфы, но так и не смог разобраться. Понятно, что этот код виновен в отставании времени по Москве :)

/* Set timezone */date_default_timezone_set( 'UTC' );

Возможно siv1987 уже дал ответ и все всё поняли, но не я :) Куда и как использовать этот класс \IPS\DateTime.

Нужно менять в настройках php. Посмотрите этот ответ, один из вариантов настройки https://ipbskins.ru/forums/topic/16688-chasovoy-poyas/#findComment-111046

Опубликовано:

Если "Europe/Moscow" ставишь, то время начинает спешить на те же 3 часа. Я так понял, здесь что-то похоже на объяснение - https://ipbskins.ru/forums/topic/14762-na-forume-php-funktsiya-time-otstayot-na-3-chasa/#findComment-100527

При обновлении страницы, то всё ОК время возвращается правильно, такая проблема только при первом заходе. И с этим можно было бы жить, но в приложении "Календарь" если событие попадает на 1 число месяца и начинается в период 00 до 2:59 ночи оно не отображается, эх.

Ну и в этой же теме есть решение от Сайрекса, только я не знаю куда его ставить и надо ли его ставить, так как там речь о тройке, а у меня сейчас 4 версия форума, хотя разницы не должно быть наверное.

if(($currentTimeZone = date_default_timezone_get()) != ini_get('date.timezone')) {
   date_default_timezone_set(ini_get('date.timezone'));
}
$date = date('Y-m-d H:i:s', $time());
if($currentTimeZone != date_default_timezone_get()) { date_default_timezone_set($currentTimeZone); }

Изменено пользователем ovi8

Опубликовано:
39 минут назад, ovi8 сказал:

И с этим можно было бы жить, но в приложении "Календарь" если событие попадает на 1 число месяца и начинается в период 00 до 2:59 ночи оно не отображается, эх.

Я сейчас ради любопытства создал мероприятие как вы написали, действительно оно не отображается, кажется знаю место, позже напишу.

Опубликовано:

Отписался в теме на форуме разработчиков, данная проблема как в IPS4, так и в IC5.

События на границе месяца не попадают в выборку, если они созданы с отличной от UTC временной зоной и дата и время начала события начинается с 1 числа месяца, а время начала входит в диапазон смещения от UTC. Особенно это заметно когда событие начинается в 7 утра 1 числа месяца в зоне UTC+8.

Для IPS 4 в файле applications/calendar/sources/Event/Event.php

Найти:

$startDateTimezone  = \IPS\calendar\Date::parseTime( $startDate->mysqlDatetime(), TRUE );

Заменить на:

$startDateTimezone  = \IPS\calendar\Date::parseTime( $startDate->mysqlDatetime() );
Опубликовано:

Здоров, это помогло! На форумах точно такая же проблема присутствует хотя она там не так критична. Если не заходить на сайт какое-то время, то при первом заходе (наверняка кэш обновляется) пост также отстает на 3 часа, после любого действия на странице время приходит в норму. Всё это звенья одной цепи с пользовательским отображением времени...

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.