swift - 当没有毫秒时,将字符串格式化为日期对象返回 nil
问题描述
我正在解析一些通过 JSON 发送的日期,直到今天它一直运行良好。我正在使用此答案中的代码:
extension Formatter {
static let iso8601: DateFormatter = {
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
return formatter
}()
}
extension String {
var dateFromISO8601: Date? {
let date = Formatter.iso8601.date(from: self)
return date
}
}
...
let date = crossingTime.dateFromISO8601!
...
查看正在发送并分配给 crossTime 的日期,导致日期为零的日期是“2018-08-27T16:00:09Z”。然而另一个完美的工作是“2018-08-23T13:59:54.447Z”
查看日期,其明确的一个日期具有毫秒数,而失败的日期则没有。是否可以同时支持两种日期格式?
解决方案
推荐阅读
- php - 全新结帐后运行“composer install”时“未设置外观根目录”
- php - 如何修复 PHP 中的“Cannot GET/POST /connectivity.php”错误
- c# - 在 C# 中将代码从 if 语句更改为 switch 语句
- android - 当值数据变为空时,datasnapshot 键出现
- ffmpeg - 如何使用 ffmpeg 将两个视频与一个 mp3 合并?
- angular-material - 在 Material Progress Spinner 中显示图像
- node.js - 向 Stripe 索取所有费用 - 承诺错误
- asp.net-core - Asp.Net Core 日志语句未显示在 Application Insights 中
- c# - 无法在我的 C# 项目中访问 Windows 输入模拟器
- sql - 为什么我在此数据库查询中收到列标题错误,而不是使用传递的字符串进行过滤?