繁体   English   中英

转换为NSDate的字符串的格式应该是什么?

[英]What should be the format of a string to convert into NSDate?

我从服务器获取以下两种类型的字符串:

  1. 2016-07-28T12:25:31.922247
  2. 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)

您可以从此链接获取确切的格式

对于第二个字符串,使用此

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是文字解析器,因此它不允许您轻松解析任何一种格式,如果必须解析两种格式,则只需要将其传递给一种格式即可,如果无法传递给另一种格式则可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM