Документация PostgreSQL довольно полная и полезная:
https://www.postgresql.org/docs/9.2/datatype-datetime.html#DATATYPE-TIMEZONES
, но, похоже, упускает ясность из довольно полезного момента, когда ясность может быть оправдана и полезна.Прочитав документацию и различные связанные вопросы и ответы о стековом потоке, я подозреваю, что верно следующее:
Тип данных PostgreSQL timestamp with timezone
хранит дату и время, а также значение utcoffset (+ ve is eastиз Гринвича)
Я бы также сделал вывод и подозреваю, что это правда:
Тип данных PostgreSQL timestamp with timezone
хранит дату и время, а также смещение utcoff (к востоку от Гринвича) до минутного разрешения.
Мой вопрос касается этих выводов.Правильны ли они, и если да, то какие доказательства могут быть направлены для их подтверждения, а если нет, то какие доказательства могут быть направлены на обратное?
Основная причина, по которой это интересно, состоит в том, что, конечно, если это правда, то PostgreSQL, которыйпринимает часовые пояса по имени или аббревиатуре, которые хранятся в таблице. pg_timezone_names
сохраняет только смещение UTC и, таким образом, теряет информацию о летнем времени.
Значение, означающее фактическое имя часового пояса (как определено в таблице pg_timezone_names
).доступный читателю в будущем, он должен быть явно сохранен рядом с timestamp with timezone
в столбце рядом с ним.
Основная причина, которая меня сейчас интересует, состоит в том, что я имел в виду то, что я чувствовал, был достаточно умнымспособ рендеринга времени, которое может записывать время события в любой точке земного шара.А именно, если записанное время находится в текущем часовом поясе пользователей, то сообщите об этом как наивную дату / время (без информации о часовом поясе), и только если оно находится в часовом поясе, отличном от читателей, сообщите информацию о часовом поясе (и даже тогда,название часового пояса может быть более удобным для пользователя, чем смещение UTC).
И, похоже, я буду обязан хранить имя часового пояса помимо времени моего события (и любой другой даты / времени, которые я храню в часовом поясе), если я хочу реализовать такой контекстно-зависимый рендеринг на веб-сайте.
Но я чувствую себя неловко, принимая такое обязательство на основе умозаключений, а не знаний, и хотел бы получить какие-либо доказательства, подтверждающие или противоречащие этим умозаключениям.