Как правильно сравнить время на разных временных зонах?

383
18 июня 2017, 18:16

Выполнено на моём сервере:

mysql> SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
+--------------------------------+
| TIMEDIFF(NOW(), UTC_TIMESTAMP) |
+--------------------------------+
| 02:00:00                       |
+--------------------------------+
1 row in set (0.03 sec)
mysql> SELECT @@TIME_ZONE;
+-------------+
| @@TIME_ZONE |
+-------------+
| SYSTEM      |
+-------------+
1 row in set (0.00 sec)

SYSTEM у меня в CET (UTC+2)

Есть две даты в разных временных зонах

  1. Server 1,Google Analytics (GMT+1): 2017-06-28 20:44:43
  2. Server 2, мой сервер (UTC+2): 2017-06-28 21:44:43

Временные зоны на серверах менять не надо.

Добавлял время на оба серверов одновременно:

<?php
    $created_at = date('Y-m-d H:i:s')
    1) $created_at -> Google Analytics
    2) $created_at -> на мой сервер

Гарантии нет что завтра временные зоны не изменятся на серверах.По этому решил приводить их в UNIX_TIMESTAMP а потом сравнивать.

Реализовываю это следующим путём:

SELECT 
  UNIX_TIMESTAMP(
CONVERT_TZ(
  '2017-06-28 15:44:43',
  '+02:00',
  @@session.time_zone
)
  ) = UNIX_TIMESTAMP(
CONVERT_TZ(
  '2017-06-28 14:44:43',
  '+01:00',
  @@session.time_zone
)
  ) AS result

Вопрос: Правильно ли я все делаю, и является ли этот подход универсальным ?

READ ALSO
Как создать правила для sonarqube в проекте php? [требует правки]

Как создать правила для sonarqube в проекте php? [требует правки]

Помогите пожалуйста с примером или подробным мануалом в области sonarqubeЕсть нужда использовать этот инструмент, но не могу найти подробный...

303
Нужна помощь в сборке модуля fileinfo для php5

Нужна помощь в сборке модуля fileinfo для php5

Добрый деньПытаюсь собрать модуль для php fileinfo

384
Запуск телеграмм бота по крону

Запуск телеграмм бота по крону

Здраствуйте, мой бот срабатывает когда на него стучится webhook телеграмма и запускается следующим кодом

371