【问题标题】:Why get nil when try to using dateFormatter in iOS Swift 3?为什么在 iOS Swift 3 中尝试使用 dateFormatter 时得到 nil?
【发布时间】:2017-08-03 11:24:11
【问题描述】:

我尝试将字符串格式的日期转换为日期格式,如下所示:

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"             
let date = dateFormatter.date(from: "2017-03-22")

但是得到零值。

我设置了

dateFormatter.locale = Locale(identifier: "en_US_POSIX") 

但不起作用...
请帮助解决此问题。

【问题讨论】:

  • 我得到了Optional(2017-03-21 18:30:00 +0000)的输出
  • 这段代码在操场上很适合我
  • 你能提供更多的上下文吗?它在哪里给你零?您在哪里使用此代码?
  • 您可能还需要设置日历stackoverflow.com/a/32408916/2303865
  • 显示viewForHeaderInSection方法的完整代码。

标签: swift date null dateformatter


【解决方案1】:

已解决

我加了

dateFormatter.calendar = Calendar(identifier: .gregorian)   

编写脚本并正常工作。

【讨论】:

    【解决方案2】:

    我想您的设备日历设置为与假定的默认公历不同,添加此行将解决问题:

    dateFormatter.calendar = Calendar(identifier: .gregorian)
    

    另外我注意到你的日期没有嵌入任何时区,如果你有一个固定的,也添加这一行:

    dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
    // Replace "UTC" with your desired timezone
    

    最终的代码是这样的:

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"             
    dateFormatter.calendar = Calendar(identifier: .gregorian)
    dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
    let date = dateFormatter.date(from: "2017-03-22")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      相关资源
      最近更新 更多