在字符串到日期对话后得到 nil

Got nil after string to date convertation

我需要将类似于“2016-07-10T21:32:20G”的 String 转换为 Date。 但出于某种原因,我一次又一次地只有 nil

我读过 an article about date formater. And unfortunately haven't fount an answer there. I found something in the documentation. And documentation tels to read about Unicode Date Format Patterns。它看起来和我的很像。

可能我漏掉了什么=(

我的代码示例。不幸的是总是得到零。

let lastUpdatedDateString = "2016-07-10 21:32:20"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-mm-dd hh:mm:ss"
let lastUpdated = dateFormatter.date(from:lastUpdatedDateString)

但是这段代码工作正常:

let lastUpdatedDateString = "2016-07-10"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-mm-dd"
let lastUpdated = dateFormatter.date(from:lastUpdatedDateString)

我正在操场上测试它。

事实上,我必须将这个 String("2016-07-10T21:32:20G") 转换为日期。

PS

总之,谢谢关注=)

认为这只是格式化程序中的大写。试试这个...

let lastUpdatedDateString = "2016-07-10 21:32:20"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let lastUpdated = dateFormatter.date(from:lastUpdatedDateString)

这是我在 playground 上得到的

let lastUpdatedDateString = "2016-07-10T21:32:20"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-ddEEEEEHH:mm:ss"
let lastUpdated = dateFormatter.date(from:lastUpdatedDateString)
print(lastUpdated)

并打印:Optional(2016-07-10 19:32:20 +0000)(我是 GMT+2)

我不知道 G 代表什么,所以我不确定如何获取模式的最后一个字符。 EEEEE代表星期几(1个字符)

编辑:似乎 G 代表公历

所以你可以从字符串中解析出最后一个字母,如果它是公历则添加它(但我想这是默认值):

dateFormatter.calendar = Calendar(identifier: .gregorian)

如果字母是 J 则为儒略历,您可以查看此答案以了解如何将格里高利历转换为儒略历: