- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
无论用户的本地时区设置为何,使用 Delphi 2007,我都需要确定东部时区的时间 (TDateTime)。
我怎样才能做到这一点?当然,需要了解夏令时。
最佳答案
如果我理解正确,您需要相当于当前系统时间的东部时间。
为此,请使用 WiNAPI 函数 GetSystemTime()
获取计算机当前的 UTC 时间。 UTC 与时区无关,并且始终会为您提供本初子午线的时间。
然后您可以使用WinAPI函数SystemTimeToTzSpecificLocalTime()
从 UTC 时间计算任何其他给定时区的本地时间。为了SystemTimeToTzSpecificLocalTime()
可以工作,你需要给它一个 TTimeZoneInformation
填充了您要转换到的时区的正确信息的记录。
以下示例将始终为您提供根据 2005 年能源政策法案的东部时间本地时间。
function GetEasternTime: TDateTime;
var
T: TSystemTime;
TZ: TTimeZoneInformation;
begin
// Get Current time in UTC
GetSystemTime(T);
// Setup Timezone Information for Eastern Time
TZ.Bias:= 0;
// DST ends at First Sunday in November at 2am
TZ.StandardBias:= 300;
TZ.StandardDate.wYear:= 0;
TZ.StandardDate.wMonth:= 11; // November
TZ.StandardDate.wDay:= 1; // First
TZ.StandardDate.wDayOfWeek:= 0; // Sunday
TZ.StandardDate.wHour:= 2;
TZ.StandardDate.wMinute:= 0;
TZ.StandardDate.wSecond:= 0;
TZ.StandardDate.wMilliseconds:= 0;
// DST starts at Second Sunday in March at 2am
TZ.DaylightBias:= 240;
TZ.DaylightDate.wYear:= 0;
TZ.DaylightDate.wMonth:= 3; // March
TZ.DaylightDate.wDay:= 2; // Second
TZ.DaylightDate.wDayOfWeek:= 0; // Sunday
TZ.DaylightDate.wHour:= 2;
TZ.DaylightDate.wMinute:= 0;
TZ.DaylightDate.wSecond:= 0;
TZ.DaylightDate.wMilliseconds:= 0;
// Convert UTC to Eastern Time
Win32Check(SystemTimeToTzSpecificLocalTime(@TZ, T, T));
// Convert to and return as TDateTime
Result := EncodeDate(T.wYear, T.wMonth, T.wDay) +
EncodeTime(T.wHour, T.wMinute, T.wSecond, T.wMilliSeconds);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:= 'In New York Citiy, it is now ' + DateTimeToStr(GetEasternTime);
end;
关于delphi - 将 TDateTime 转换为另一个时区,无论本地时区如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/690739/
我的问题简而言之:TDateTime A (03.09.2014 13:40) - TDateTime B (03.09.2014 13:40) = -1 我有两个要比较的 TDateTime 值,首
我想将秒添加到 TDateTime 变量中,以便结果是分钟的顶部。例如,如果是 08:30:25,我想更改 TDateTime 变量来存储 08:31:00。 我看到 TDateTime 有一个 De
我正在执行一个长循环,下载数千个文件。我想显示估计的剩余时间,因为这可能需要几个小时。然而,根据我所写的内容,我得到了平均毫秒。如何将此平均下载时间从毫秒转换为 TDateTime? 看看我在哪里设置
Delphi 5 中是否有任何方法可以将字符串转换为 TDateTime,您可以在其中指定要使用的实际格式? 我正在开发一个作业处理器,它接受来自各个工作站的任务。这些任务有一系列参数,其中一些是日期
我正在使用 C++ Builder 并收到以下错误: [ILINK32 Error] Error: Unresolved external '__fastcall System::Internal::
我正在为 FMX TGrid 编写列和单元格类,它将在每个单元格中包含 TCalendarEdit 和 TTimeEdit 实例。除了正确处理这些子控件中所做的更改外,一切正常。 type TFM
似乎无法将 NULL 分配给 TDateTime 变量(“未分配值”)。 我想象的唯一方法是使用这样的东西: function isNull(aDate : TDateTime) : boolean;
正在寻找返回两个 TDateTime 值之间的秒差的代码示例。具体来说,我试图比较两个 TDateTime 值,如果大于第二个阈值,它将运行特定方法。 谢谢! 最佳答案 尝试SecondsBetwee
有没有办法检查Delphi是否TDateTime变量具有有效内容而不会捕获转换异常? 我编写了一个应用程序,必须解析数百个以原始 Delphi 记录形式编写的大文件,其中包含 TDateTime fi
我需要通过 AJAX 向 delphi 服务器发送一个日期,该服务器接受浮点格式的日期并设置 TDateTime 属性。 例如。 var date: TDateTime; begin da
我正在使用 C++ Builder 并有以下问题: 我想检测一个日期/时间是否晚于另一个日期/时间,以及晚了多少。 这是我当前的代码: TDateTime testFirstDate("11/09/2
我在将日期设置为 TDateTime 变量时遇到问题。 我已经试过了,没有运气: TDateTime Mine; Mine = ("12/05/1990"); 我该怎么做? 这段代码有什么问题: TD
我正在使用 C++ 开发预约系统。 能否请我帮忙将字符串转换为 TDateTime 变量。 这是一个我希望得到帮助的示例; TDateTime appDateTime(2012, 9, 15, 14,
我正在使用 C++ Builder,我需要一些帮助来查看两次是否相同。 这是我的代码: TDateTime appDateFromVector = TimeOf(appointmentsForFind
我正在使用 C++ 并使用 TDateTime 数据类型。 如何获取当前系统日期/时间并将其放入 TDateTime 变量? 最佳答案 正如 Jesse 提到的,您可以使用 Now() 函数(或静态
我正在使用 C++ Builder 并使用 TDateTime 数据类型创建 GUI 应用程序。 当我在 TDateTime 对象上使用 MonthOf() 方法时,我得到的值比 TDateTime
我正在尝试为 Tdatetime 编写一个函数(但是当我打开我的程序时,他必须显示现在的数据) 下面我有一个函数用于 TDatetime 但我有一个错误: ((((''DecodeDateTime(d
我有一个对象,它有一个值,但该值可以是 integer , string , boolean或TDateTime 。所以,它是 Variant . 我使用VarType()检查其类型,但自 VarTy
无论用户的本地时区设置为何,使用 Delphi 2007,我都需要确定东部时区的时间 (TDateTime)。 我怎样才能做到这一点?当然,需要了解夏令时。 最佳答案 如果我理解正确,您需要相当于当前
我需要将 TDateTime 转换为具有微秒精度的String。如果是毫秒精度,可以使用格式: DateTimeToString(Result, 'd.m.yyyy hh:nn:ss.zzz', da
我是一名优秀的程序员,十分优秀!