有一個日期字符串我:轉換datestring斯威夫特3 NSDate的
週三2017年3月25日5時30分〇〇秒GMT + 0530(IST)
我想這個字符串轉換Date
對象斯威夫特3.
我已經提到Link1,Link 2和Link 3生成此日期字符串格式,但無法獲得正確的格式。
有一個日期字符串我:轉換datestring斯威夫特3 NSDate的
週三2017年3月25日5時30分〇〇秒GMT + 0530(IST)
我想這個字符串轉換Date
對象斯威夫特3.
我已經提到Link1,Link 2和Link 3生成此日期字符串格式,但無法獲得正確的格式。
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)
「2017年3月25日星期三05:30:00 +0000」它與OP所要求的字符串不同 –
確定然後只是將dateformatter更改爲:dateFormatter.dateFormat =「E,MMM d yyyy HH:mm:ss Z」 –
這仍然不完全相同。細節很重要。 – rmaddy
1)如果包含了像IST
或GMT
差異時區名稱字符串,那麼你可以使用NSDateDetector
作爲this SO post answer解釋說:
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 AM //將日期轉換爲當地時區
2017-03-25 00:00:00 +0000 // GMT時間印刷值
2)或者,如果你一些如何能夠從你的字符串中刪除GMT
和IST
參考那就試試這個:
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年3月25日00:00:00 +0000 //的GMT時間
正如我所說的,值得關注的是不與代碼,值得關注的是,我無法獲得格式打印的值提到的日期字符串。 –
這一個很有趣。格式''EEE MMM dd yyyy HH:mm:ss'GMT'Z(z)「'應該可以工作。這種格式會將Date對象格式化爲與問題中顯示的格式相同的格式,並且它將正確地解析問題中顯示的格式的字符串,但僅限於其他時區。 'DateFormatter'似乎不喜歡'IST'時區。我用我提到的格式解析字符串'「Wed Mar 25 2017 05:30:00 GMT-0500(CDT)」''沒有問題。 – rmaddy
「IST」時區肯定存在問題。請參閱[這些搜索結果](https://stackoverflow.com/search?q=dateformatter+ist)。由於它是不明確的,所以'DateFormatter'在解析時無法處理它。 – rmaddy