使用 Swift 组合 ISO8601 格式字符串中的时间和日期

Combining time and date in ISO8601 format string using Swift

我有两个 texfields 表示日期选择器中的日期和时间,但是当我解析字符串时只显示日期。我想将日期和时间组合成 ISO8601 格式的字符串(例如 2015-06-11T00:00:00.000Z),然后将其发送到服务器。

您可以使用 NSCalendar 方法 dateBySettingHour 来完成,如下所示:

Xcode 8.2.1 • Swift 3.0.2

let df = DateFormatter()
df.calendar = Calendar(identifier: .iso8601)
df.locale = Locale(identifier: "en_US_POSIX")
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z"
if let date = df.date(from:"2015-06-11T00:00:00.000Z") {
    let hour = 4
    if let dateWithTime = Calendar.current.date(bySettingHour: hour, minute: 0, second: 0, of: date) {
        let resultString = df.string(from: dateWithTime)
        print(resultString) // "2015-06-11T04:00:00.000Z"
    }
}

字符串是日期的文本表示,通常包括显式或隐式时区。 NSDate 表示 UTC 中的日期。

如果你想加一个小时,你把字符串转换成NSDate,加一个小时,把它转换成一个字符串。例如,转换将注意夏令时,2:30am 后一小时可能是 4:30am。或者 2:30am。