Swift 3 有没有办法将日期打印为日期而不是字符串

Swift 3 is there a way to print date as Date not as String

我正在尝试用我必须发送给 api 的日期参数形成一个正文。日期以字符串格式打印,有没有办法将其作为唯一日期格式发送。

    let isoDate = "2019-09-21"
    let dateFormatter = DateFormatter()

    dateFormatter.dateFormat = "yyyy-MM-dd"
    let date = dateFormatter.date(from:isoDate)!

    let dateStr = dateFormatter.string(from: date)

    let body: [String: Any] = [
        "date": dateStr
    ]
    print(body)

它打印:

["date": "2019-09-21"]

我希望它打印为:

["date": 2019-09-21]

试试这个:

print(dateFormatter.string(from: date))

输出:

2019-09-21

您可以使用小时分秒:

dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
print(dateFormatter.string(from: date))

输出:

2019-09-21 00:00:00

您的输出示例类似于日期的 DebugDescription。

要将日期转换为字符串,您需要调用:

dateFormatter.string(from: date)

这是 playground 的屏幕截图:

let isoDate = "2019-09-21"
let dateFormatter = DateFormatter()
dateFormatter.timeZone = NSTimeZone(name: "UTC")! as TimeZone
dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from:isoDate)!
let strDate = dateFormatter.string(from: date)
print("\(strDate)")

请尝试:

dateFormatter.dateFormat = "yyyy-MM-dd"
let date = dateFormatter.date(from:isoDate)!
print(dateFormatter.string(from: date)) // 2019-09-21
let body: [String: AnyObject] = [
    "date": dateFormatter.string(from: date) as AnyObject
]
print(body) //["date": 2019-09-21]

dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
print(dateFormatter.string(from: date)) // 2019-09-21 00:00:00

我能够使用以下代码实现此目的:

    let isoDate = "2019-09-21"

    let body: [String: AnyObject] = [
        "date": isoDate as AnyObject
    ]
    print(body)

现在打印:

["date": 2019-09-21]