因此,在 Objective-C 中对日历代码进行单元测试时存在以下问题:时区包含有关夏令时的信息,因此您在夏天编写一个测试,预计 6 月 10 日的日出发生在早上 6:02。您的测试通过了,稍后,您在非 DST 时运行测试并且失败,因为当您获取时区时,夏令时将关闭。
似乎没有一种简单的方法可以告诉它为您提供打开夏令时的时区?
我正在考虑做一个类别,以便拦截时区调用,但这听起来非常混乱,因为我不知道你正在操纵什么日期。
当然,我可以编写所有测试来检查时区设置,然后改变我所有的期望,但这听起来像是所有可能选择中最糟糕的。
特定于区域的时区必须考虑夏令时,以便准确计算两个日期(和时间)之间的间隔。如果您对此不感兴趣,也许您可以使用 UTC“时区”来代替,它根本不会改变。
例如,新西兰标准时间定义为 UTC+12:00,新西兰夏令时定义为 UTC+13:00。尽管新西兰的当地时间在夏令时期间有所不同,但 UTC+12:00 的时间保持不变(也就是说,所有其他也使用 UTC+12:00 的国家不会仅仅因为夏令时就神奇地向前推进)已在新西兰开始)。
您只需提供 UTC 偏移量作为名称即可实现此目的:
NSTimeZone *utc_plus12 = [NSTimeZone timeZoneWithName:@"UTC+12:00"];
找出您所在地区的夏令时基于什么 UTC 偏移量并使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)