我需要从NSDate
构造String
对象,所以我编写了以下代码:
func getNSDateObjectFromString(string: String) -> NSDate {
var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let date = formatter.dateFromString(string)
return date!
}
不幸的是,输入字符串有时也可能包含毫秒。在这种情况下我该怎么办?根据{{3}}
,我找不到任何方法来读取毫秒(不是在白天)提前致谢。
答案 0 :(得分:3)
据我所知,格式不支持“可选”字段。所以你必须逐个尝试这些格式:
func getNSDateObjectFromString(string: String) -> NSDate {
var formatter = NSDateFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
var date = formatter.dateFromString(string)
if date == nil {
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.S"
date = formatter.dateFromString(string)
}
return date!
}
答案 1 :(得分:1)
您可以尝试以下内容:
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
答案 2 :(得分:1)
在对日期格式进行了一些试验和错误后,这对我使用Swift 3起了作用。
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSS"
let date = formatter.date(from: "2017-03-11 13:16:31.177")!
debugPrint(dateFormatter.string(from: date))
并且在往返之后导致预期的调试输出
"2017-03-11 13:16:31.177"
请注意,使用"yyyy-MM-dd'T'HH:mm:ss.SSS"
格式会导致formatter.date(from:
返回nil
个可选Date
。
答案 3 :(得分:0)
它们重要吗? 在DateFormatter中,您可以按年,月,日,小时,分钟,秒创建匹配的字符串,但您不需要。如果匹配的字符串不包含任何字符串,格式化程序将忽略它们。