将日期字符串转换为Swift 3 NSDate

时间:2017-05-29 06:03:08

标签: ios swift date nsdateformatter

我有一个日期字符串:

  

2017年3月25日星期三05:30:00 GMT + 0530(IST)

我想将此字符串转换为Swift 3中的Date对象。

我已提及Link1Link 2Link 3来生成此日期字符串的格式,但无法获得正确的格式。

2 个答案:

答案 0 :(得分:0)

1)如果您的字符串包含ISTGMT等时区名称,那么您可以按照{{3}中的说明使用NSDateDetector }:

extension String {
  var nsString: NSString { return self as NSString }
  var length: Int { return nsString.length }
  var nsRange: NSRange { return NSRange(location: 0, length: length) }
  var detectDates: [Date]? {
    return try? NSDataDetector(types: NSTextCheckingResult.CheckingType.date.rawValue)
        .matches(in: self, range: nsRange)
        .flatMap{$0.date}
  }
}

//your example here
let dateString = "Wed Mar 25 2017 05:30:00 GMT+0530 (IST)"
if let dateDetected = dateString.detectDates?.first {
    let date = dateDetected//Mar 25, 2017, 5:30 AM
    print(dateDetected)//2017-03-25 00:00:00 +0000 - this is GMT time
}
  

2017年3月25日,上午5:30 //日期转换为当地时区
  2017-03-25 00:00:00 +0000 // GMT时间的印刷值

2)或者,如果您能够从字符串中删除GMTIST引用,请尝试以下操作:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, MMM d yyyy HH:mm:ss Z"
let date = dateFormatter.date(from: "Wed Mar 25 2017 05:30:00 +0530")!
print(date)

它会给你

  

2017年3月25日,上午5:30 //日期转换为当地时区
  2017-03-25 00:00:00 +0000 // GMT时间的印刷值

答案 1 :(得分:-1)

var dateString = "Wed, 25 Mar 2017 05:30:00 +0000"
var dateFormatter = DateFormatter()
dateFormatter.dateFormat = "E, d MMM yyyy HH:mm:ss Z"
var dateFromString = dateFormatter.date(from: dateString)
print(dateFromString)