[英]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"
我没有得到想要的输出。
如果您不关心秒的小数部分,则可以这样删除它。
var strDate = "2016-07-28T12:25:31.922247"
if strDate.rangeOfString(".") != nil{
let arr = strDate.characters.split{$0 == " "}.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-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
是文字解析器,因此它不允许您轻松解析任何一种格式,如果必须解析两种格式,则只需要将其传递给一种格式即可,如果无法传递给另一种格式则可以。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.