在Swift 3中将日期转换为(非人类可读的)字符串

时间:2017-06-08 08:52:11

标签: swift date swift3 nsdate nsdateformatter

我有一个Date对象,如下所示:

 2017-06-08 08:36:16 +0000

我需要将此转换为字符串,格式如下:

"2017-06-08T08:36:16Z"

我发布的REST api只接受日期作为字符串。

我在网上找到的大多数信息都是将日期转换为人类可读的格式。如果可能的话,我甚至可能只是" stringify"我的日期对象,但是试图将其投射为明显失败。有大量的"转换日期到字符串"那里有疑问,但还没有遇到过这样的问题。

知道怎么做吗?

3 个答案:

答案 0 :(得分:3)

您所要做的就是将日期格式(DateFormatter)更改为所需格式。

请注意,您指定日期(2017-06-08 08:36:16 +0000)的格式是:

   yyyy-MM-dd HH:mm:ss Z

例如,考虑到给定的日期值是今天,您可以读取它 - 像字符串一样:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"

let givenDate = Date()
let stringGivenDate = dateFormatter.string(from: givenDate) // 2017-06-08 12:10:23 +0300

因此,将日期格式更改为:

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:SS'Z'"
let stringGivenDateWithDesiredFormat = dateFormatter.string(from: givenDate) // 2017-06-08T12:11:75Z

根据上面的代码段,您指定的格式(2017-06-08T08:36:16Z)为:

  

YYYY-MM-dd'T'HH:MM:SS'Z'

答案 1 :(得分:2)

试试这个

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:SS'Z'"
let dateDate =  NSDate()
let stringDate = dateFormatter.string(from: date as Date)

其中date2017-06-08 08:36:16 +0000格式

中的日期对象

答案 2 :(得分:2)

以下两种格式适合您。 yyyy-MM-dd HH:mm:ss Zyyyy-MM-dd'T'HH:mm:ss'Z'

let input = "2017-06-08 08:36:16 +0000"
let dateFormater = DateFormatter.init()
dateFormater.dateFormat = "yyyy-MM-dd HH:mm:ss Z"
if let date = dateFormater.date(from: input) {
    dateFormater.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"
    let output = dateFormater.string(from: date)
    print(output)
}