根据要求,我的API可能会在" 2018-01-01"或" 01-01-2018"或" 2018-01-01T00:00:00"格式
如何查看日期格式?
例如:我的API响应代码" 2018-01-01"应该归还给我" yyyy-MM-dd"等等。
我可以通过检查我的字符长度并相应地指定日期格式来做到这一点。但我觉得这不是正确的方法。
答案 0 :(得分:2)
您只需要定义日期格式并尝试每种格式。其中一个会成功。只需确保所有日期字符串都来自同一时区(我想它们都是UTC)并且不要忘记将日期格式化程序区域设置为" en_US_POSIX"使用固定格式的日期时:
let dateStrings = ["2018-01-01", "01-01-2018", "2018-01-01T00:00:00"]
let dateFormats = ["yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd", "MM-dd-yyyy"]
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
var dates: [Date] = []
for dateString in dateStrings {
for dateFormat in dateFormats {
formatter.dateFormat = dateFormat
if let date = formatter.date(from: dateString) {
dates.append(date)
print("dateFormat:", dateFormat)
print("date:", date)
break
}
}
}
这将打印
dateFormat:yyyy-MM-dd
日期:2018-01-01 00:00:00 +0000
dateFormat:MM-dd-yyyy
日期:2018-01-01 00:00:00 +0000
dateFormat:yyyy-MM-dd' T' HH:mm:ss
日期:2018-01-01 00:00:00 +0000
答案 1 :(得分:0)
在API中使用含糊不清的日期格式存在风险。但是如果你坚持这个,你可以制作多个DateFormatters
并为每个特定格式配置(通过相应地设置它们的dateFormat
)并尝试依次使用这些格式转换字符串。一旦取得成功,您就知道自己采用的格式(dateFormat
)。