转换为 NSDate 的字符串格式应该是什么?
What should be the format of a string to convert into NSDate?
我从服务器获得以下两种类型的字符串:
2016-07-28T12:25:31.922247
2016-07-28T13:39:13
我想将它们转换成 NSDate。我正在使用以下代码片段进行转换,但它失败了:
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(name: "UTC")
dateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ss"
我没有得到想要的输出。
你可以从这里得到准确的格式Link
对于第二个字符串,使用这个
yyyy-MM-dd'T'HH:mm:ss
您的日期格式适用于 2016-07-28T13:39:13
但添加 'T'
示例:yyyy-MM-dd'T'HH:mm:ss
。
但是对于 2016-07-28T12:25:31.922247
你需要澄清这意味着 922247
说实话从来没有见过这样的东西,但我会尝试 yyyy-MM-ddTHH:mm:ssZ
您需要引用 "T"(或任何应以文字形式出现的字母字符),尝试:
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(name: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
请注意,这只会解析您的第二个字符串。要解析您的第一个字符串,您需要使用:
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.S"
如果你关心小数秒。由于 NSDateFormatter
是一个文字解析器,它不允许您轻松地解析任何一种格式,如果您必须解析这两种格式,您只需要将它传递给一个,如果失败则传递给另一个。
如果你不在意秒的小数部分,那么你可以像这样删除它。
var strDate = "2016-07-28T12:25:31.922247"
if strDate.rangeOfString(".") != nil{
let arr = strDate.characters.split{[=10=] == " "}.map(String.init)
strDate = arr[0]
}
//Now you can convert this string to date using same date format
let formatter= NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let date = formatter.dateFromString(strDate)
我从服务器获得以下两种类型的字符串:
2016-07-28T12:25:31.922247
2016-07-28T13:39:13
我想将它们转换成 NSDate。我正在使用以下代码片段进行转换,但它失败了:
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(name: "UTC")
dateFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ss"
我没有得到想要的输出。
你可以从这里得到准确的格式Link
对于第二个字符串,使用这个
yyyy-MM-dd'T'HH:mm:ss
您的日期格式适用于 2016-07-28T13:39:13
但添加 'T'
示例:yyyy-MM-dd'T'HH:mm:ss
。
但是对于 2016-07-28T12:25:31.922247
你需要澄清这意味着 922247
说实话从来没有见过这样的东西,但我会尝试 yyyy-MM-ddTHH:mm:ssZ
您需要引用 "T"(或任何应以文字形式出现的字母字符),尝试:
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(name: "UTC")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
请注意,这只会解析您的第二个字符串。要解析您的第一个字符串,您需要使用:
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.S"
如果你关心小数秒。由于 NSDateFormatter
是一个文字解析器,它不允许您轻松地解析任何一种格式,如果您必须解析这两种格式,您只需要将它传递给一个,如果失败则传递给另一个。
如果你不在意秒的小数部分,那么你可以像这样删除它。
var strDate = "2016-07-28T12:25:31.922247"
if strDate.rangeOfString(".") != nil{
let arr = strDate.characters.split{[=10=] == " "}.map(String.init)
strDate = arr[0]
}
//Now you can convert this string to date using same date format
let formatter= NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let date = formatter.dateFromString(strDate)