问题描述
我的应用程序使用一个计时器,该计时器使用 MM-dd-yyyy h:mm a
格式的字符串构造。当用户超过由 resetTimeString 指定的时间时,下一次重置时间是通过递增到第二天('a' 值不变)并将该值存储在数据库中来确定的。简而言之,它代表一个每日计时器,每个用户都可以选择自己的“a”值。
我有许多用户就崩溃问题与我联系,在比较他们在数据库中的值后,他们似乎都有 resetTimeString
的 03-14-2021 2:00 AM
var resetTime: Date?
let resetTimeFormatter = DateFormatter()
resetTimeFormatter.dateFormat = "MM-dd-yyyy h:mm a"
if let resetString = resetTimeString { //value in DB
resetTime = resetTimeFormatter.date(from: resetString)! // <- Only crashes with 03-14-2021 2:00 AM
}
我针对 resetTimeString
值测试了一系列不同的值,它们都运行良好:
03-13-2021 2:00 AM
03-14-2021 1:00 AM
03-14-2021 3:00 AM
03-15-2021 2:00 AM
我对这次崩溃感到非常困惑,并认为我会寻求一些帮助; 感谢任何帮助!
解决方法
在您的语言环境中,夏令时在 2021 年 3 月 14 日凌晨 2 点更改,因此特定日期不存在。