gpt4 book ai didi

objective-c - 使 NSTimeZone 在单元测试中无故障

转载 作者:搜寻专家 更新时间:2023-10-30 20:10:02 25 4
gpt4 key购买 nike

所以这就是在 Objective-C 中对日历代码进行单元测试的问题:时区包含有关夏令时的信息,因此您在夏天编写测试,预计 6 月 10 日的日出将在早上 6:02 发生。您的测试通过了,稍后,您在不是 DST 时运行测试并且失败,因为当您获得时区时,夏令时已关闭。

似乎没有一种简单的方法可以告诉它在启用夏令时的情况下为您提供时区?

我正在考虑做一个类别,以便拦截时区调用,但这听起来 super 困惑,因为我不知道你在操纵什么日期。

当然,我可以编写所有测试来检查时区设置,然后改变我所有的期望,但这听起来是所有可能选择中最糟糕的。

最佳答案

区域特定时区必须考虑夏令时,以便准确计算两个日期(和时间)之间的间隔。如果您对此不感兴趣,也许您可​​以改用 UTC“时区”,它根本不会改变。

例如,新西兰标准时间定义为UTC+12:00,新西兰夏令时定义为UTC+13:00。尽管新西兰的本地时间在夏令时期间有所不同,但 UTC+12:00 的时间保持不变(也就是说,其他所有也使用 UTC+12:00 的国家不会因为夏令时而神奇地向前移动已在新西兰开始)。

您只需提供该 UTC 偏移量作为名称即可实现此目的:

NSTimeZone *utc_plus12 = [NSTimeZone timeZoneWithName:@"UTC+12:00"];

找出您所在地区的夏令时所基于的 UTC 偏移量并使用它。

关于objective-c - 使 NSTimeZone 在单元测试中无故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com