无法将字符串转换为日期和日期转换为字符串 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
java.text.ParseException:无法解析的日期:将 mm/dd/yyyy 字符串转换为日期