Jump to content
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() ?

 

 

Featured Replies

  • Author

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

image.png.855f77c394ebb6c2858478d46b38c33c.png

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

  • 4 years later...

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

/* 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); }

Edited by 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 часа, после любого действия на странице время приходит в норму. Всё это звенья одной цепи с пользовательским отображением времени...

13-52.png

16-52.png

Edited by ovi8

4 часа назад, ovi8 сказал:

На форумах точно такая же проблема присутствует хотя она там не так критична.

Зафиксирую пока здесь, позже посмотрю

Первый заход

image.png

После обновления страницы

image.png

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

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.