【发布时间】:2018-09-05 06:19:41
【问题描述】:
我下面的代码工作正常。 我不知道为什么它有时会崩溃(主要是在应用程序启动时。大约 100 例中有 1 例)。
extension Formatter {
static let enUSPOSIX: DateFormatter = {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")//
return formatter
}()
}
let dateFormatter = Formatter.enUSPOSIX
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss+hh:mm"
let date = dateFormatter.date(from: "2018-05-13T00:00:00+05:30")
dateFormatter.timeZone = TimeZone(identifier: "UTC")
let calendar = Calendar.current
let dayComponent = calendar.component(.year, from: date!)//crashes here sometime
print(dayComponent)
【问题讨论】:
-
我建议查找unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns。
+hh:mm不是时区的正确模式。 -
@MartinR:很好,但你能解释一下为什么它只是偶尔崩溃,而不是所有时间。
-
@QuocNguyen:实际上提供的示例在我的测试中 not 崩溃,因为
+05:30匹配+hh:mm(05 恰好是 1-12 中的有效小时小时格式)。例如,-05:30或+13:00会崩溃,因为它们与模式不匹配。 -
@MartinR 感谢您的解释。提供的示例在我的测试中也没有崩溃:D
-
@MartinR 谢谢。是
TimeZone(identifier应该是TimeZone(abbreviation吗?
标签: ios swift nsdate nsdateformatter