powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Отобразить локальное время
35 сообщений из 35, показаны все 2 страниц
Отобразить локальное время
    #40124598
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходная задача: в таблице есть поле DATE_CREATED, в котором хранится время в UTC. Необходимо отобразить в DBGrid локальное время для текущего клиента. Firebird 3.0.7

Варианты решения:

1. В TField.OnGetText делать постоянный пересчет в локальное время. Недостаток: TField.OnGetText вызывается на любую перерисовку строки

2. Написать запрос
Код: sql
1.
2.
3.
4.
SELECT
  DATEADD(:bias MINUTE TO DATE_CREATED) AS DATE_CREATED
FROM
  mytable

Недостаток: я не могу из rdb$fields вытащить описание поля, т.к. поле в запросе перестает ссылаться на таблицу

3. Делать выборку не из таблицы, а из вьюхи. Вьюху описать так
Код: sql
1.
2.
3.
4.
SELECT
  DATEADD(COALESCE(RDB$GET_CONTEXT('USER_SESSION', 'bias'), 0) MINUTE TO DATE_CREATED) AS DATE_CREATED
FROM
  mytable

Переменную bias заполнять после коннекта. Тут, вроде все должно работать.

Вопрос - может есть более прямой способ? Переход на Firebird 4 не предлагать.

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124601
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Самый нормальный вариант (переход на 4) ты отверг.

Мне нравится вариант 2. Причём тут rdb$fields мне не понятно. Чего ты там хочешь вытаскивать и какая привязка ломается?
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124602
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Причём тут rdb$fields мне не понятно
Там лежит локализованное описание поля, которое подтягивается в Caption колонки.
Симонов Денис
Чего ты там хочешь вытаскивать и какая привязка ломается?
Работает примерно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT
  rdb$description
FROM
  rdb$fields
WHERE
  rdb$relation_name = :in_rel_name AND
  rdb$field_name = :in_rel_field

А параметры поднимаются
Код: pascal
1.
2.
LRelName := LVarFld.SqlVar.RelName;
LRelField := LVarFld.SqlVar.SqlName
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124603
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_1. В TField.OnGetText делать постоянный пересчет в локальное время. Недостаток:
TField.OnGetText вызывается на любую перерисовку строки

И в чём проблема? Сложение в Дельфи довольно быстрая операция.
https://stackoverflow.com/questions/15567194/how-to-convert-local-time-to-utc-time-in-delphi-and-how-to-convert-it-back-from
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124604
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Сложение в Дельфи довольно быстрая операция.
А последующее FormatDateTime?
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124609
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_А последующее FormatDateTime?

Да, в общем-то тоже. Оно же там по-любому происходит. Я не помню чтобы грид
кэшировал значения ячеек. Хотя тебе никто не мешает это сделать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124616
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Исходная задача: в таблице есть поле DATE_CREATED, в котором хранится время в UTC. Необходимо отобразить в DBGrid локальное время для текущего клиента. Firebird 3.0.7

Варианты решения:

1. В TField.OnGetText делать постоянный пересчет в локальное время. Недостаток: TField.OnGetText вызывается на любую перерисовку строки

2. Написать запрос
Код: sql
1.
2.
3.
4.
SELECT
  DATEADD(:bias MINUTE TO DATE_CREATED) AS DATE_CREATED
FROM
  mytable

Недостаток: я не могу из rdb$fields вытащить описание поля, т.к. поле в запросе перестает ссылаться на таблицу

А, собственно, почему недостаток? Значение ведь получается не от того поля которое в базе, и тогда какого, собственно, подсовывать описание не от него?

Исходное поле должно иметь описание типа "Дата-время события в UTC".
А новое поле - это "Дата-время события в localtime".

В свое время думал о подобной конструкции - запихать в базу подписи к полям, но отказался, в т.ч. и по твоей причине. У меня в запросах много полей - производных от чего-то. Кроме того, пихать длинные подписи в Caption колонки в гриде неэффективно - их не видно. А вот если поле редактировать - то там можно/нужно и длинное описание показать. Это приводит к тому что единственного описания будет недостаточно.

Активно использую комментирование полей и таблиц в базе, но чисто в целях разработки, для себя же.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124633
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks
У меня в запросах много полей - производных от чего-то.
Вьюхи решают эту проблему
fraks
Кроме того, пихать длинные подписи в Caption колонки в гриде неэффективно - их не видно
А что мешает не пихать длинные заголовки?
fraks
А вот если поле редактировать - то там можно/нужно и длинное описание показать
Опять таки, никто не мешает использовать несколько значений через разделитель. У меня в одном месте используется такой формат
Код: powershell
1.
Caption;Width;Alignment;Default Visible


fraks
Активно использую комментирование полей и таблиц в базе, но чисто в целях разработки, для себя же.
Никогда не испытывал такой потребности. У меня все поля самодокументиремы. Их назначение видно из названия, типа и домена
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124654
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Недостаток: TField.OnGetText вызывается
_Vasilisk_> на любую перерисовку строки

А это где-то во что-то выливается?
Ты же не тысячи строк ежесекундно перерисовываешь...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124666
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
fraks
У меня в запросах много полей - производных от чего-то.
Вьюхи решают эту проблему

Тогда почему я вижу этот топик?
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124691
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_

fraks
Кроме того, пихать длинные подписи в Caption колонки в гриде неэффективно - их не видно
А что мешает не пихать длинные заголовки?
fraks
А вот если поле редактировать - то там можно/нужно и длинное описание показать
Опять таки, никто не мешает использовать несколько значений через разделитель. У меня в одном месте используется такой формат
Код: powershell
1.
Caption;Width;Alignment;Default Visible



Собственноручно пихать в реляционную базу строку CSV, с тем что бы потом обратно ее разбирать??
А не проще ли было бы, вместо rdb$fields.rdb$description, сделать свою таблицу, сразу с нужными колонками?
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124693
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Способы 2 и 3 выглядят странновато по своей сути. На клиенте требуется рассчитать зональное клиентское(!) время по известному серверному абсолютному. Для этого зона отправляется на сервер, сервер производит расчет (сложение) и возвращает результат. Несколько через эээ... через сервер. Сервер SQL как сервис калькуляции. Все чисто клиентское должно считаться на клиенте, ИМХО.

Использование при хранении зональных времен (Firebird 4) вряд ли помогло бы, скорее, внесло бы путаницу. В данной задаче ведь требуется время клиентской зоны, а не той, которая на сервере в значении даты содержится. Все равно пришлось бы пересчитывать из одной зоны в другую, почти то же самое, что из UTC, только с большей вероятностью ошибиться.

Третий способ еще чреват тем, что если на клиенте поменяли зону, не прерывая коннекта (ну мало ли), пойдут искажения.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124705
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shalamyansky
пойдут искажения.
Не пойдут. Достаточно отловить WM_TIMECHANGE и пересчитать смещение
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124732
shalamyansky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4. Не помню внутренностей TField, но я бы попробовал сделать свое поле - наследник TDateTimeField, добавил ему свойство Zone (по умолчанию - системная зона) и переписал ключевой метод GetValue или какой там с учетом этой зоны. Таким образом правильное зональное значение всегда имела бы сама дата-время, а не только демонстрационная строка.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124736
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы взял вариант 2 и подумал над механизмом подписи полей не из rdb$fields.rdb$description.

Не знаю, переваривают ли такое датасеты, а просто TpFIBQuery нормально отдает такие конструкции

Код: plsql
1.
select 123 as "Длинное название поля"


Или например, продумать систему именования полей, что бы они не пересекались ни с чем, и описания к ним засунуть в отдельную таблицу, наподобие rdb$fields.rdb$description.
В конструкции подтягивания заголовков сделать обход сначала rdb$fields.rdb$description, а если остались пустые заголовки - то идем в отдельную таблицу с заголовками.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124737
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подсовывать чего-либо в TField.OnGetText считаю в корне неправильным.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124745
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks> А не проще ли было бы, вместо rdb$fields.rdb$description,
fraks> сделать свою таблицу, сразу с нужными колонками?

Ну, до внедрения и повсеместного использования
собственного слоя метаданных в БД ещё дорасти надо...
И это точно не проще, хотя гораздо универсальнее.
Ну и далеко не всегда это надо - ради одного Description
я бы этого тоже не делал, хотя если там уже и Alignment,
и Width, и Visible - то скорее пора, чем нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124746
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks> В конструкции подтягивания заголовков сделать обход
fraks> сначала rdb$fields.rdb$description, а если остались пустые
fraks> заголовки - то идем в отдельную таблицу с заголовками.

Если вопрос интересный (судя по всему) - предлагаю создать
отдельный топик. Заодно и на будущее пригодится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124747
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks> Подсовывать чего-либо в TField.OnGetText считаю в корне неправильным.


У этого мнения есть какие-нибудь обоснования?
В частности, конкретно для даты там можно
подсовывать "вчера", "сегодня" и пр.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124752
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calculated (InternalCalc) fields уже рассматривались ?
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124761
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это лучше OnGetText-а в данном случае?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124765
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
А это лучше OnGetText-а в данном случае?
InternalCalc - однозначно лучше, но не всегда доступны, просто Calculated - надеюсь да, но проверять не буду.
С точки зрения логики и правил использования инструмента - точно лучше.
С точки зрения эффективности реализации - есть документация, исходники и отладчик.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124784
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, по идее они должны быть производительнее, конечно.
Но лень проверять, да и сложно это (визуальную составляющую).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124790
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
fraks> Подсовывать чего-либо в TField.OnGetText считаю в корне неправильным.
У этого мнения есть какие-нибудь обоснования?

Запрос возвращает одно значение, а видим мы другое? Это нормально?
А давайте поставим условие по дате. Ой... а чего-то оно неправильно срабатывает...

Гаджимурадов Рустам
В частности, конкретно для даты там можно
подсовывать "вчера", "сегодня" и пр.

С не меньшим успехом можно подсовывать и в запросе. Правда поле будет уже не TDateTime а String.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124883
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks> Запрос возвращает одно значение, а видим мы другое? Это нормально?

Конечно. Запрос возвращает дату в своём формате,
пользователь видит в своём. Ты только против дат
таким образом возражаешь или в принципе?
В "булевых" полях же ты как-то дорисовываешь?

> А давайте поставим условие по дате.
> Ой... а чего-то оно неправильно срабатывает...

Отчего же. И фильтрация, и сортировка и всё
остальное могут и должны рабоать корректно.

> С не меньшим успехом можно подсовывать и в запросе.
> Правда поле будет уже не TDateTime а String.

Правильно, в запросе будет строка. А в OnGetText
тип поля менять не нужно, это только визуализация.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124931
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
fraks> Запрос возвращает одно значение, а видим мы другое? Это нормально?

Конечно. Запрос возвращает дату в своём формате,
пользователь видит в своём. Ты только против дат
таким образом возражаешь или в принципе?
В "булевых" полях же ты как-то дорисовываешь?


В FB2.5 булевых полей нет.
Вместо них использую smallint, иногда char.

Нет. Не дорисовываю.
Булево поле, если оно мне нужно на клиенте так как оно нужно в базе - я тащу на клиента как есть.
Если мне нужно его как-то "не так" отобразить - то в запросе его же привожу к нужному виду, через iif или case, и тащу вторым полем, чисто "для посмотреть".
Исходное поле при этом может быть и скрытым. Оно будет доступно для всяких обработок на клиенте, а смотреть клиент будет на его визуальную копию. Но открыв скрытое поле с "исходником" можно получить доступ к тому что на самом деле в поле лежит.

Т.к. я не храню заголовки полей в базе а прописываю их на клиенте по месту выполнения запроса, то проблемы как у автора топика у меня нет.

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

Гаджимурадов Рустам

> А давайте поставим условие по дате.
> Ой... а чего-то оно неправильно срабатывает...

Отчего же. И фильтрация, и сортировка и всё
остальное могут и должны работать корректно.

Работает корректно, только видим мы несколько не то что хотим.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124932
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Исходная задача: в таблице есть поле DATE_CREATED, в котором хранится время в UTC.
> Необходимо отобразить в DBGrid локальное время для текущего клиента.

Я бы еще обратил внимание на то, что сама задача - далеко не так однозначна как кажется на первый взгляд.

К примеру, я живу в городе, в котором за время моей жизни смещение от UTC менялось 3 раза.
Соответственно, смещение от UTC - это может быть далеко не константа.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124969
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks
Соответственно, смещение от UTC - это может быть далеко не константа.
А кто сказал, что это должна быть константа? Не нужно выдумывать проблемы на ровном месте.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40124987
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksЕсли мне нужно его как-то "не так" отобразить - то в запросе его же привожу к нужному виду, через iif или case, и тащу вторым полем, чисто "для посмотреть".
Ну вот некоторые обходятся одним полем вместо двух.


> открыв скрытое поле с "исходником" можно получить
> доступ к тому что на самом деле в поле лежит.

Так и с OnGetText-ом можно.
Что именно тебя смущает?
Сам факт наличия обработчика?

> Собственно, проблема автора в том, что он заточился на
> неоднозначное решение с хранением описания полей в
> базе и вытаскиванием оттуда их на клиента.

Это не проблема, а архитектурное решение
(на мой взгляд тоже сомнительне, но это
тема другого разговора и не в этом топике).
Иметь доступ к исходному RDB$FIELD
может захотеться и по другим причинам.


> Работает корректно, только видим
> мы несколько не то что хотим.

Отчего же? Это зависит от того, как и
что отображать. Сделаешь неправильно -
будет неправильно, разумеется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40125000
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
fraks
Соответственно, смещение от UTC - это может быть далеко не константа.
А кто сказал, что это должна быть константа? Не нужно выдумывать проблемы на ровном месте.

Ты видимо не понял "глубину глубин".
Тут ни константой ни переменной не обойтись.

Дело не в том что в твоей географии присутствуют клиенты из разных часовых поясов, а в том что для конкретного географического пункта смещение от UTC в разные периоды времени может быть разным. Так же могут меняться границы часовых поясов. Сегодня город/область в одном поясе, а завтра - в другом.

Википедия: tz database
Хабр: Tzdata — глобальная база знаний о часовых поясах

На практике, это так же не панацея.

Лично столкнулся с тем что:
- пакет в линуксе, который работает с Tzdata, перестал обновляться, т.к. изменился формат самой Tzdata.
- обновить пакет что бы он работал с новым форматом не получилось - слишком старый был линукс
- после того как удалось победить 2 первых пункта, оказалось, что информация по моему городу в нем неактуальна
И оставалась неактуальна длительное время, и кажись так актуальной и не стала (стала, но к тому времени я уже перестал на это надеяться).
А город не какой-то мелкий, а третий в России по населению .

Т.к. в России отменили переход на летнее/зимнее время, это позволило выбрать тупо фиксированное смещение. Но это, естественно, не позволяет таким образом корректно вычислить смещение задним числом (т.к. информация в базе неверна), и никто не гарантирует что опять кто-то не выдумает игры с часовым поясом.

Поэтому, если информация о корректности в локальном времяисчислении критична, я бы подумал над собственной версией Tzdata для своей географии. Что бы в случае чего - не ждать манны от бесплатных общественных сервисов.

Вот такая красота для НСО. Да и не только.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
# From Paul Eggert (2016-03-18):
# Asia/Novosibirsk covers:
# 54	RU-NVS	Novosibirsk Oblast

# From Stepan Golosunov (2016-05-30):
# http://asozd2.duma.gov.ru/main.nsf/(Spravka)?OpenAgent&RN=1085784-6
# moves Novosibirsk oblast from UTC+6 to UTC+7.
# From Stepan Golosunov (2016-07-04):
# The law was signed yesterday and published today on
# http://publication.pravo.gov.ru/Document/View/0001201607040064

Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14  6:00
 6:00 -      +06      1930 Jun 21
 7:00 Russia +07/+08  1991 Mar 31  2:00s
 6:00 Russia +06/+07  1992 Jan 19  2:00s
 7:00 Russia +07/+08  1993 May 23 # say Shanks & P.
 6:00 Russia +06/+07  2011 Mar 27  2:00s
 7:00 -      +07      2014 Oct 26  2:00s
 6:00 -      +06      2016 Jul 24  2:00s
 7:00 -      +07
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40125027
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
Zone Asia/Novosibirsk	 5:31:40 -	LMT	1919 Dec 14  6:00
 6:00 -      +06      1930 Jun 21
 7:00 Russia +07/+08  1991 Mar 31  2:00s
 6:00 Russia +06/+07  1992 Jan 19  2:00s
 7:00 Russia +07/+08  1993 May 23 # say Shanks & P.
 6:00 Russia +06/+07  2011 Mar 27  2:00s
 7:00 -      +07      2014 Oct 26  2:00s
 6:00 -      +06      2016 Jul 24  2:00s
 7:00 -      +07


Ух-ты, даже не 3 раза менялось, а 7 раз!
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40125064
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks
Ты видимо не понял "глубину глубин".
Тут ни константой ни переменной не обойтись.
Тынц
fraks
Сегодня город/область в одном поясе, а завтра - в другом.
Да хоть в третьем. Это проблема пользователя, который выставляет часовой пояс в системе на основании своих фантазий. А моя задача этот часовой пояс (а вернее текущее смещение по UTC) считать. Все.
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40125066
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_А моя задача этот часовой пояс (а вернее текущее смещение по UTC) считать. Все.

Не всё. Потому что у тебя не время в поле, а timestamp. Тебе не текущее смещение
надо получать, а то каким оно было в тот момент.
https://docs.microsoft.com/en-us/windows/win32/api/timezoneapi/nf-timezoneapi-systemtimetotzspecificlocaltime
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40125128
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Потому что у тебя не время в поле, а timestamp. Тебе не текущее смещение
надо получать, а то каким оно было в тот момент.
Не нужно. Я же с самого начала написал, что в поле у меня лежит UTC
Чем это лучше ручного вычисления смещения на основании GetTimeZoneInformation и прибавления этого смещения к значению в базе?
...
Рейтинг: 0 / 0
Отобразить локальное время
    #40125133
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Чем это лучше ручного вычисления смещения на основании GetTimeZoneInformation и
прибавления этого смещения к значению в базе?

В базе лежит полночь первого января. Ручное вычисление на основании текущей
таймзоны сейчас даст 03:00, а через полгода у той же записи будет 02:00. Это
действительно то, что тебе нужно?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Отобразить локальное время
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]