【问题标题】:String can't be parsed into Date "Swift"字符串无法解析为日期“Swift”
【发布时间】:2020-07-10 04:44:30
【问题描述】:

我正在尝试将以下字符串输入“2020-04-05 19:02:02”解析为日期,我正在使用以下代码来执行此操作:

static func getDateFromString(_ dateStr: String) -> Date? {
    let dateFormater = DateFormatter()
    dateFormater.dateFormat = "yyyy-MM-dd H:mm:ss"
    dateFormater.timeZone = TimeZone(identifier: "UTC")
    return dateFormater.date(from: dateStr)
}

问题是它不起作用,它返回 nil

有什么建议吗?谢谢

【问题讨论】:

  • 对我来说很好。你能显示minimal reproducible example吗?你确定输入的字符串是什么吗?
  • 它工作没问题只需检查您的输入字符串
  • 在设置日期格式之前,您需要将日期格式化程序的语言环境设置为“en_US_POSIX”
  • 请注意,H 是 1-23 小时,前导零小时 00-23 您需要使用 HH
  • 谢谢大家,是Xcode的问题

标签: ios swift date parsing nsdate


【解决方案1】:

给你,这很好用:

在 dateString 中以字符串格式传递数据,对于 dateFormat 传递您想要的格式并选择格式,请使用 NSDateFormatter:

let expiryDateString = "2020-04-05 19:02:02"
let dateformat = "yyyy-MM-dd HH:mm:ss"
let expireDate = DateHelper.getDateFrom(expireDateString, dateformat)
static func getDateFrom(dateString: String,dateFormat: String) -> Date? {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = dateFormat
        dateFormatter.timeZone = .current
        guard let date = dateFormatter.date(from: dateString) else {return nil}
        return date
}

【讨论】:

  • 看来函数已经有值了,但是当我尝试将它返回到变量时它变成了nil,例如:let expireDate = DateHelper.getDateFromString(expireDateString)
  • expireDate 变量为零
  • 这太奇怪了,这在我的整个编程生涯中从未发生过
  • 没关系 好像是Xcode的编译问题,我刚刚清理了项目然后我重建了
  • 还是谢谢你,我真的很感激
猜你喜欢
  • 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
相关资源
最近更新 更多