【发布时间】:2011-06-07 12:01:04
【问题描述】:
我意识到这个问题可以通过编写一些测试代码来回答。我不是懒惰,我只是认为答案可能一般有用。
我有一个应用程序生成了大量数据,其中记录了本地时间(由 NOW 例程返回)。我们遇到了夏令时进出转换的障碍 - 即当我们更改为 DST 时缺少一个小时,而当我们退出 DST 时又重复了一个小时。这会导致假定日期有序记录的操作出现问题。
因此,该应用程序已更改为使用 UTC 中的所有日期时间,但我将能够以 UTC 或本地时间显示日期时间。我还必须处理存储在本地时间的日期时间,并确保它们正确地转换为 UTC。这很棘手,因为日期时间可能在 DST 生效时已存储,因此在一般情况下,我需要能够确定任何随机日期是否在 DST 期间内或之外。当然,在一个小时的时间段内,日期时间是不明确的,可能是夏令时结束前的最后一小时,也可能是夏令时结束后的第一个小时。没有办法解决这个问题。
在对更改进行编码时,我想知道 NOW 调用的结果。它在内部调用 GetLocalTime。当您处于 DST 期间时,GetLocalTime(和 NOW)会返回什么,但“调整时钟以适应夏令时更改”的选项已关闭?
无论“为夏令时调整时钟”是关闭还是打开,我如何编写一个返回 DST 期间内的当前日期时间(应用 DST 偏差)的例程?
【问题讨论】:
-
这里有一些不错的cmets。谢谢安德烈亚斯。
-
这里还有一些不错的 cmets:koders.com/delphi/…
标签: delphi utc dst systemtime