TimeToStr(time) - время по Гринвичу?[РЕШЕНО]

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TimeToStr(time) - время по Гринвичу?[РЕШЕНО]

Сообщение Владимир » 31.03.2022 21:45:34

Всем доброго!
Lazarus 2.0.10 - время московское
Lazarus 2.0.12 r63942 - время по гринвичу
Lazarus 2.2.0 - время по гринвичу

ОС Linux, в системе время московское
Как вариант
Код: Выделить всё
TimeToStr(time+3/24)

Куда копать, дабы московское время получить?
Последний раз редактировалось Владимир 12.04.2022 08:56:24, всего редактировалось 2 раз(а).
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: TimeToStr(time) - время по Гринвичу?

Сообщение SSerge » 01.04.2022 04:55:59

Владимир
Не только в преобразованиях в строку проблемы, на самом деле
http://sirserge.altai.info/articles/?id=46
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: TimeToStr(time) - время по Гринвичу?

Сообщение Владимир » 01.04.2022 09:00:43

Т.е. простого решения на данный момент нет.
SSerge писал(а):Не только в преобразованиях в строку проблемы

Я понимаю, что проблема с TDateTime. TimeToStr() вынес в заголовок для привлечения внимания :D
И спасибо!
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: TimeToStr(time) - время по Гринвичу?

Сообщение WAYFARER » 04.04.2022 09:35:08

На самом деле проблем вроде бы нет.
В первую очередь нужно поискать проблему в системе, так как time возвращает локальное время (см. реализацию).
То что возвращается UTC - это не правильно.

Для начала гляньте выхлоп timedatectl в консоли.
И можно посмотреть что вернет функция GetLocalTimeOffset.

А что выведет вот такой код?
Код: Выделить всё
uses sysutils,dateutils;
var
  Time:TDateTime;
  SystemTime: TSystemTime;
begin
  Time := Now;
  writeln('Local:',formatdatetime('dd-mm-yyyy hh:nn:ss',Time));
  writeln('UTC  :',formatdatetime('dd-mm-yyyy hh:nn:ss',LocalTimeToUniversal(Time)));
  GetLocalTime(SystemTime);
  writeln(SystemTime.Hour,':',SystemTime.Minute);
end.

Код: Выделить всё
output:
Local:04-04-2022 09:52:38:729
UTC  :04-04-2022 04:52:38:729

lazarus 2.2.0 fpc 3.2.0 linux 64
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 518
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: TimeToStr(time) - время по Гринвичу?

Сообщение alexs » 04.04.2022 11:12:47

Была проблема.
Правили чтение данных таймзоны

сейчас нормально
Lazarus 2.3.0 (rev main-2_3-1047-g4d0b49c62b) FPC 3.3.1 x86_64-linux-gtk2
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: TimeToStr(time) - время по Гринвичу?

Сообщение WAYFARER » 04.04.2022 23:54:22

alexs писал(а):Была проблема.
Правили чтение данных таймзоны

А где именно проблема была? В какой версии?
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 518
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: TimeToStr(time) - время по Гринвичу?

Сообщение alexs » 11.04.2022 16:21:05

Проблема была в FPC
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: TimeToStr(time) - время по Гринвичу?

Сообщение Владимир » 12.04.2022 08:52:20

WAYFARER писал(а):А что выведет вот такой код?

Я ж написал - в системе время московское, тем не менее:
Код: Выделить всё
Local:12-04-2022 04:48:02
UTC  :12-04-2022 04:48:02
System:12-04-2022 07:48:02
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: TimeToStr(time) - время по Гринвичу?[РЕШЕНО]

Сообщение alexs » 12.04.2022 10:42:41

Если не ошибаюсь - правили файл https://gitlab.com/freepascal.org/fpc/s ... mezone.inc
текущий FPC работает норм.
Вот пример от WAYFARER - всё красиво.

Код: Выделить всё
[alexs@alexs 9]$ fpc aa.pas
Free Pascal Compiler version 3.3.1 [2022/04/05] for x86_64
Copyright (c) 1993-2022 by Florian Klaempfl and others
Target OS: Linux for x86-64


[alexs@alexs 9]$ ./aa
Local:12-04-2022 09:36:50
UTC  :12-04-2022 06:36:50
9:36
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

Рейтинг@Mail.ru
cron