字符串到日期转换后没有了

时间:2016-12-06 10:34:42

标签: swift string date nsdateformatter

我需要将字符串 simular转换为" 2016-07-10T21:32:20G"到日期。 但由于某些原因,我一次又一次只有 nil

我已阅读an article about date formater。不幸的是,避风港在那里得到了答案。我在the documentation找到了一些东西。并且文档说明了Unicode Date Format Patterns。它看起来与我的相似。

enter image description here

可能我错过了一些东西=(

我的代码示例。不幸的是总是没有。

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)

我在操场上测试它。

enter image description here

实际上我必须将此字符串(" 2016-07-10T21:32:20G")转换为日期。

PS

无论如何,感谢关注=)

2 个答案:

答案 0 :(得分:2)

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

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)

答案 1 :(得分:1)

这是我在操场上得到的

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它的朱利安日历,那么你可以看到这个答案,看看如何将格里高利转换为朱利安:https://stackoverflow.com/a/12137019/2106940

相关问题