我有一个Date对象,如下所示:
2017-06-08 08:36:16 +0000
我需要将此转换为字符串,格式如下:
"2017-06-08T08:36:16Z"
我发布的REST api只接受日期作为字符串。
我在网上找到的大多数信息都是将日期转换为人类可读的格式。如果可能的话,我甚至可能只是" stringify"我的日期对象,但是试图将其投射为明显失败。有大量的"转换日期到字符串"那里有疑问,但还没有遇到过这样的问题。
知道怎么做吗?
答案 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)
其中date
是2017-06-08 08:36:16 +0000
格式
答案 2 :(得分:2)
以下两种格式适合您。
yyyy-MM-dd HH:mm:ss Z
和yyyy-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)
}