Правильная реализация учёта летнего времени

@ndrey

Новичок
Автор оригинала: zerkms
какой ужас. у меня даты уже в UTC в mysql и всю рутину за меня делает mysql.
На самом деле никакого ужаса нет. Хранить дату в TIMESTAMP и перекладывать рутину на мускул может и лучше, но не всегда подходит.
 

zerkms

TDD infected
Команда форума
Fortop
непонятно, почему было не ввести параметры и в параллельную 5.2, которая как бы ещё поддерживаемая. неужели тоже какие-то internal issues не позволяют? %)
 

Fortop

Новичок
zerkms
А можно это спросить у разработчиков? :D

Ее могли перевести именно в разряд "поддерживаемых" :) т.е. когда фиксятся баги, но новый функционал не добавляется.

Напиши им в трекер :)
 

mz

Новичок
эм, не понял зачем массивы, date("I") и date("I", дата_из_базы) ? Что я и предлагал делать.
 

zerkms

TDD infected
Команда форума
pilot911
я сохраняю в mysql timestamp.
выше пролистай, я в первом посте описал всё ведь - этот вариант лишён всех недостатков, разве что DST дурацкий %)
 

pilot911

Новичок
Автор оригинала: zerkms
pilot911
я сохраняю в mysql timestamp.
выше пролистай, я в первом посте описал всё ведь - этот вариант лишён всех недостатков, разве что DST дурацкий %)
не понимаю для случая, когда может быть несколько клиентов с разными поясами

допустим, для каждого устанавливаем свой пояс, но кто-то впоследствии пояс будет менять - соответственно, для этого клиента данные из базы будут отличными от того, что он захочет увидеть, верно?

не правильнее ли хранить в базе все данные в UTC-0 ?
 

pilot911

Новичок
спасибо, с TIMESTAMP разобрался

а как ты решаешь вопрос хранения даты до 1970 года ?

я сейчас использую отрицательные целые от mktime()
 

zerkms

TDD infected
Команда форума
никак не решаю :) не столкнулся ибо.

ps: а нужно ли для дат до 1970 время? если нет - то вполне можно обойтись тем же mysql date
 

pilot911

Новичок
ясненько, спасибо )

-~{}~ 29.03.10 05:09:

прочитал в одном месте - может проблема с выдачей времени с учетом перехода на летнее возникает по причине того, что в мускуле устанавливаешь time_zone как "+04:00", а надо бы - "Asia/Vladivostok" - отсюда мускуль не может определиться с правильностью перехода лето/зима ?
 

zerkms

TDD infected
Команда форума
pilot911
вполне вероятно, вот только проблема в том, что по дефолту mysql.time_zone не заполнена нигде...

Код:
mysql> select count(*) from mysql.time_zone;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.01 sec)
и решение получается очень настройкозависимое, хотя и сильно более красивое.
 

pilot911

Новичок
Автор оригинала: zerkms
pilot911
вполне вероятно, вот только проблема в том, что по дефолту mysql.time_zone не заполнена нигде...

Код:
mysql> select count(*) from mysql.time_zone;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (0.01 sec)
и решение получается очень настройкозависимое, хотя и сильно более красивое.
да.. есть такое

если не затруднит, чтобы уже закрыть вопрос - потестируй, пож-та, с заполненной таблицей

дамп лежит здесь http://downloads.mysql.com/general/timezone-2009g.zip
 

zerkms

TDD infected
Команда форума
Код:
mysql> set time_zone = 'Asia/Vladivostok';
Query OK, 0 rows affected (0.01 sec)

mysql> select unix_timestamp('2010-03-28 01:00:00');
+---------------------------------------+
| unix_timestamp('2010-03-28 01:00:00') |
+---------------------------------------+
|                            1269702024 |
+---------------------------------------+
1 row in set (0.00 sec)

mysql> select unix_timestamp('2010-03-28 02:00:00');
+---------------------------------------+
| unix_timestamp('2010-03-28 02:00:00') |
+---------------------------------------+
|                            1269705624 |
+---------------------------------------+
1 row in set (0.00 sec)

mysql> select unix_timestamp('2010-03-28 03:00:00');
+---------------------------------------+
| unix_timestamp('2010-03-28 03:00:00') |
+---------------------------------------+
|                            1269705624 |
+---------------------------------------+
1 row in set (0.00 sec)
угу, с текстовым представлением зоны сразу всё окей.
 

pilot911

Новичок
отлично, таким образом, лучше попинать хостера, чем вставлять хаки, которых будет не один десяток :)
 

zerkms

TDD infected
Команда форума
pilot911
прям сейчас у меня функция вывода даты одна. но вообще да, лучше забыть об этой проблеме вообще :)
 
Сверху