在字符串到日期对话后得到 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
则为儒略历,您可以查看此答案以了解如何将格里高利历转换为儒略历:
我需要将类似于“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
则为儒略历,您可以查看此答案以了解如何将格里高利历转换为儒略历: