日期格式化程序返回nil值

时间:2017-01-06 06:37:15

标签: ios swift nsdate nsdateformatter ios10

我有这个代码工作,但现在突然间,它开始崩溃。我无法弄清楚,任何帮助将不胜感激。

 let dateFormatter = NSDateFormatter()
 dateFormat = "EEE, MMM d, yyyy hh:mm a"
 dateFormatter.dateFormat = dateFormat                  
 let date = dateFormatter.dateFromString("Thu, Jan 5, 2017 12:28 PM")

它返回date为零。为什么?我希望它能恢复正确的日期。

这看起来像是一个可能重复的问题,但它具有特定的细节。

3 个答案:

答案 0 :(得分:0)

let dateformattor = NSDateFormatter()
dateformattor.dateFormat = "EEE, MMM d, yyyy hh:mm a"
dateformattor.timeZone = NSTimeZone.localTimeZone()
let dt = "Thu, Jan 5, 2017 12:28 PM"

let dt1 = dateformattor.dateFromString(dt as String)
print(dt1) //print date and time UTC format.

输出:

2017-01-05 06:58:00 +0000 

答案 1 :(得分:0)

var dateFormatter = DateFormatter()
        let dateFormat = "EEE, MMM d, yyyy hh:mm a"
        dateFormatter.dateFormat = dateFormat
        let date = dateFormatter.date(from: "Thu, Jan 5, 2017 12:28 PM")

输出:

enter image description here

答案 2 :(得分:0)

每次使用时间和日期格式化程序时,请记住设置区域设置时区

具有非英语语言环境的设备将无法解析“星期四,2017年1月5日12:28 PM”,因为“星期四”和“Jan”显然是英语特定的。

所以:

dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
dateFormatter.locale = Locale(identifier: "en_US_POSIX")

或您要使用的任何时区和区域设置