powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Знак для времени UTC в TTimeZoneInformation.bias Delphi 7
3 сообщений из 3, страница 1 из 1
Знак для времени UTC в TTimeZoneInformation.bias Delphi 7
    #39971954
evgen29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Понадобилось мне выводить время в UTC. Написал небольшой код, но суть в том, что смещение в минутах относительно UTC мне возвращает со знаком минус(-180), хотя я живу в Подмосковье и UTC у меня на компе настроено как время Московское должно возвращать со знаком +.
Следующий код выдаёт например так: 2020-06-22T18:05:15-03:00, а правильно 2020-06-22T18:05:15+03:00
Гугление подобного для Delphi 7 результатов не дало.

чё делать? помогите спасите )

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,DateUtils, StdCtrls, Math;

type
  TForm1 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  ZoneInfo: TTimeZoneInformation;
  st: _SYSTEMTIME;
  Bias: Integer;
  tmp : TDateTime;
  znk: Char;
begin
  case GetTimeZoneInformation(ZoneInfo) of
        TIME_ZONE_ID_STANDARD:
            Bias := ZoneInfo.Bias + ZoneInfo.StandardBias;
        TIME_ZONE_ID_DAYLIGHT:
            Bias := ZoneInfo.Bias + ZoneInfo.DaylightBias;
        TIME_ZONE_ID_UNKNOWN:
            Bias := ZoneInfo.Bias;
        else
            Bias := 180;
    end;
  znk:='+';  
  if Bias<0 then znk:='-';
  ShowMessage(FormatDateTime('yyyy-mm-dd',now)+'T'+FormatDateTime('hh:nn:ss',now)+znk+FormatFloat('00',Abs(Bias) div 60)+':'+FormatFloat('00',Abs(Bias) mod 60));


end;

end.
...
Рейтинг: 0 / 0
Знак для времени UTC в TTimeZoneInformation.bias Delphi 7
    #39971968
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если почитать документацию ?
Bias

The current bias for local time translation on this computer, in minutes. The bias is the difference, in minutes, between Coordinated Universal Time (UTC) and local time. All translations between UTC and local time are based on the following formula:

UTC = local time + bias
...
Рейтинг: 0 / 0
Знак для времени UTC в TTimeZoneInformation.bias Delphi 7
    #39972177
evgen29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

видимо заработался, спасибо!
тогда в скрипте поменяю и будет все ок:
Код: pascal
1.
  if Bias>=0 then znk:='-';
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Знак для времени UTC в TTimeZoneInformation.bias Delphi 7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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