无法将字符串转换为日期和日期转换为字符串 Swift 5.2

Posted

技术标签:

【中文标题】无法将字符串转换为日期和日期转换为字符串 Swift 5.2【英文标题】:Unable to convert string to date and date to string Swift 5.2 【发布时间】:2020-07-21 21:08:43 【问题描述】:

我正在尝试将字符串转换为日期,然后再转换回字符串,但我总是遇到致命错误。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm:ss Z" //Your date format
dateFormatter.locale = Locale(identifier: "en_US")
//dateFormatter.timeZone = TimeZone(abbreviation: "GMT+0:00") //Current time zone
//according to date format your date string
guard let date = dateFormatter.date(from: "Tue, 21 Jul 2020 20:04:09 +0000") else 
    fatalError()

print(date) //Convert String to Date
dateFormatter.dateFormat = "MMM d, yyyy" //Your New Date format as per requirement change it own
let newDate = dateFormatter.string(from: date) //pass Date here
print(newDate) //New formatted Date string
return newDate

我知道有很多解决方案,但没有一个有效。

【问题讨论】:

将 hh(12 小时格式)更改为 HH(24 小时格式) 您应该将格式化程序的语言环境设置为“en_US_POSIX”,并且应该在设置 dateFormat 之前完成 顺便说一句,如果您的意图是向用户显示日期,则不应使用固定日期格式。您应该使用 dateStyle 并尊重用户设备区域设置和设置***.com/questions/28332946/… 【参考方案1】:

尝试使用这种格式(HH 而不是hh):

dateFormatter.dateFormat = "EEE, dd MMM yyyy HH:mm:ss Z"
hh - "如果只有 1 位数字,则 12 小时小时用零填充" HH - “如果只有 1 位数字,则 24 小时制用零填充”

【讨论】:

【参考方案2】:

如果您从“20”更改为“08”,那么它可以工作,所以从 “2020 年 7 月 21 日星期二 20:04:09 +0000”到“2020 年 7 月 21 日星期二 08:04:09 +0000”

不知道为什么,我会更多地玩它,但我猜它不喜欢24小时制。

乔纳斯

【讨论】:

pawello2222 所说的。 HH 是 24 小时制,而 hh 不是。

以上是关于无法将字符串转换为日期和日期转换为字符串 Swift 5.2的主要内容,如果未能解决你的问题,请参考以下文章

无法将 yyyyMMddHHmmss 格式的字符串日期转换为 DateTime dart

DBUtils 无法将字符串转换为日期

java.text.ParseException:无法解析的日期:将 mm/dd/yyyy 字符串转换为日期

SQL Server 无法使用有效字符串将字符串转换为日期时间

将字符串转换为日期时间

Javascript将日期时间字符串转换为纪元