如何在dateFormatter中添加字符

时间:2017-09-11 16:32:52

标签: swift date

我跟着this回答,但它对我不起作用。

我想把时间格式化为:

  

" 2017年9月11日的Ť 11:45:00-04:00"

我正在做:

let xFormatter = DateFormatter()
xFormatter.dateFormat = "yyyy-MM-ddTHH:mm:ss-04:00"
print(xFormatter.string(from: date))

我需要在日期和时间之间使用 T 。但是,如果我添加,我的格式变成了:

  

2017年9月11日

(最后-4:00是我硬编码的时间偏移...)

1 个答案:

答案 0 :(得分:7)

添加单引号

xFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss-04:00"

来自文档:

  

...如果要将ASCII字母用于表示文字文本,则需要将ASCII字母括在单引号中。

来源:Unicode.org: Date Format Patterns

修改

请注意,时区只是对字符串的修改,日期格式化程序不会考虑它。

要考虑您必须设置格式化程序的timeZone

的时区
xFormatter.timeZone = TimeZone(secondsFromGMT: -14400)

在iOS 10.0+和macOS 10.12+中,有一种更方便的方法来创建ISO8601字符串

let isoFormatter = ISO8601DateFormatter()
isoFormatter.timeZone = TimeZone(secondsFromGMT: -14400)
isoFormatter.formatOptions = .withInternetDateTime
print(isoFormatter.string(from: Date()))