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