Delphi NOW功能的结果如何受“调整夏令时变化时钟”选项的影响
我意识到这个问题可以通过编写一些测试代码来解决.我不是懒惰,我只是认为答案通常很有用.
我有一个应用程序,它生成了大量数据,其中包含用本地时间标记的记录(由NOW例程返回).我们遇到了夏令时转换的障碍 – 即当我们改为DST时会丢失一个小时,而当我们退出DST时会重复一个小时.这会导致假定日期排序记录的操作出现问题. 因此,应用程序已被更改为使用UTC中的所有日期时间,但我将能够以UTC或当地时间显示日期时间.我还必须处理以本地时间存储的日期时间,并确保它们正确地转换为UTC.这很棘手,因为在DST生效时可能已经存储了日期时间,所以在一般情况下我需要能够确定任何随机日期是否在DST期间之内或之外.当然有一个小时的时间段,其中日期时间是模糊的,可能是在夏令时结束之前的最后一小时,或者在结束之后的第一个小时.没有办法解决这个问题. 在对更改进行编码时,我想知道NOW调用的结果.在内部,它调用GetLocalTime.当您在DST期间内时,GetLocalTime(和NOW)会返回什么,但是“为夏令时更改调整时钟”选项是否已关闭? 如何编写一个在DST周期内返回当前日期时间的例程(应用DST偏差),无论“夏令时调整时钟”是否已关闭或打开? 解决方法
我认为你不能轻易解决问题.
变量太多了: >存储的时间戳 有一个Delphi TZDB project可以帮助您制定时区规则. 我认为不依赖所有上述变量更实际,但存储三个字段: >本地格式的时间戳 您在第三个字段上执行排序,并显示前两个字段. –jeroen (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |