如何从YYYY-MM-dd'T'HH获得时间:mm:ss.sssZ

时间:2017-07-31 07:23:30

标签: ios date swift3 nsdateformatter

嗨我想从“2017-07-31T11:40:00.000Z”获得时间11:40

以下是我正在使用的代码:

     let formatter = Foundation.DateFormatter()
        formatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.sssZ" //2017-04-01T18:05:00.000
        let date1  = formatter.date(from: data.arvTime)
        print("date:\(String(describing: date1))")
        let dateFormatterPrint = Foundation.DateFormatter()
        dateFormatterPrint.dateFormat = "HH:mm"
        let resultTime = dateFormatterPrint.string(from: date1!)
        print("time:\(String(describing: resultTime))")

以1:29获得时间,即我的时间错误

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:4)

使用dateformat

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"

而不是

formatter.dateFormat = "YYYY-MM-dd'T'HH:mm:ss.sssZ" 

获取完整代码

 let formatter = Foundation.DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" //2017-04-01T18:05:00.000
    let date1  = formatter.date(from: "2017-04-01T18:05:00.000Z")
    print("date:\(String(describing: date1))") 
    formatter.dateFormat = "HH:mm"
    let resultTime = formatter.string(from: date1!)
    print("time:\(String(describing: resultTime))")

选项-2

    let formatter = Foundation.DateFormatter()
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.sssZ" //2017-04-01T18:05:00.000
    let date1  = formatter.date(from: "2017-04-01T18:05:00.000Z")
    print("date:\(String(describing: date1))")
    formatter.timeZone = TimeZone(abbreviation: "UTC")
    formatter.dateFormat = "HH:mm"
    let resultTime = formatter.string(from: date1!)
    print("time:\(String(describing: resultTime))")

<强>输出

enter image description here

答案 1 :(得分:1)

NSLog始终以GMT时区打印日期对象,而不是您当地的时区。使用您当地的时区

答案 2 :(得分:0)

试试这个 使用timeZone的{​​{1}}属性。

dateFormatter