【问题标题】:Date from String using DateFormatter returning nil使用 DateFormatter 返回 nil 的字符串中的日期
【发布时间】:2019-03-13 09:06:26
【问题描述】:

我有一个像yyyy-MM-dd 这样的字符串,我想用它创建一个Date

static func dateFromStringWithBarra(date : String) -> String {
    print("DATE: \(date)")
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    let date_from_format = dateFormatter.date(from: date)
    print("date_from_format: \(date_from_format)")
    dateFormatter.dateFormat = "dd/MM/yyyy"
    print("date_from_format: \(date_from_format)")
    return dateFormatter.string(from: date_from_format!) // <- nil
}

输出:

DATE: 2018-11-04 date_from_format: nil date_from_format: nil

【问题讨论】:

  • 在 Swift 操场上对我来说效果很好。 (Xcode 10,Swift 4.2)
  • 在操场上也适合我。
  • 我能做什么??
  • 您确定您的date 字符串中没有空格吗?
  • 不,这是正确的。但我使用dateFormatter.isLenient = true 解决。我不知道为什么,但确实有效。

标签: ios swift date nsdate


【解决方案1】:

我遇到了同样的问题,我的问题只是通过将语言环境添加到 DateFormatter 来解决:

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "es_MX_POSIX")

希望对你有帮助。

【讨论】:

    【解决方案2】:

    关于该代码的一些事情:

    1) 不知道为什么要使用两种不同的日期格式 2)如果可能的话,你应该避免使用强制展开,在这种情况下,守卫可能是一个不错的选择。

    意思是代码应该更像这样:

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    
    guard let date_from_format = dateFormatter.date(from: date) else {
        return ""
    }
    return dateFormatter.string(from: date_from_format)
    

    【讨论】:

    • 两种格式的重点是将日期字符串转换为不同格式的新日期字符串。您的代码只返回相同的字符串,因此没有意义。而你的回答并没有解释问题。
    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多