【问题标题】:Date formatter returning nil value返回 nil 值的日期格式化程序
【发布时间】:2017-01-06 06:37:14
【问题描述】:

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

 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")

它以 nil 的形式返回 date。为什么?我希望它返回正确的日期。

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

【问题讨论】:

  • 我试过了,它返回正确的日期let 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") date is "Jan 5, 2017, 12:28 PM"
  • 你用的是swift 3.0吗?
  • 是的,我正在使用 swift 3。
  • 尝试将格式化程序区域设置为“en_US_POSIX”,比较stackoverflow.com/a/40702569/1187415
  • 顺便说一句,你的代码是 Swift 2,它确实用 Swift 3 编译。

标签: ios swift nsdate nsdateformatter ios10


【解决方案1】:
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 

【讨论】:

  • 这对 Swift 3 不友好。
  • 它的 swift 2.0 @BenjaminLowry
  • 我的错,我以为 OP 使用的是 Swift 3.0。
  • @BenjaminLowry 如果您需要 swift 3.0,那么我也可以在 swift 3.0 中转换这个简单的代码
  • 哦,不,我也发布了这个问题的答案(在 swift 3 中)。我只是误读了 cmets,并认为 OP 使用的是 swift 3。
【解决方案2】:
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")

输出:

【讨论】:

    【解决方案3】:

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

    具有非英语语言环境的设备将无法解析“Thu, Jan 5, 2017 12:28 PM”,因为“Thu”和“Jan”显然是特定于英语的。

    所以:

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

    或您想使用的任何时区和语言环境

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多