swift - Swift:日期无法解析“yyyy-MM-dd'T'HH:mm:ss”字符串
问题描述
我目前正在尝试调用 Api,然后它会返回一些信息以及更改日期。之后我想以“dd.MM.yyyy”格式显示日期。我从 Api 获得的日期如下所示:“2020-03-20T19:30:00”。因此,我在这个问题中使用了解决方案:How to get time from YYYY-MM-dd'T'HH:mm:ss.sssZ使其看起来像我想要的格式。
不幸的是,当我尝试解析从 Api 获得的日期时,我总是得到一个 nil 值。
我写的代码如下:
let inputFormatter : DateFormatter = DateFormatter()
inputFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
let dateFormatter : DateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy"
//date is always nil
let date = inputFormatter.date(from: content?.DateTime ?? "2020-03-20T19:30:00")
dateLabel.text = dateFormatter.string(from: date ?? Date())
有人知道为什么我总是得到 nil 值,以及我转换日期的方式是好还是坏?
解决方案
@Leo Dabus 给出了很好的分数。有趣的是,我已经使用字符串“2020-03-20T19:30:00”在操场上测试了您的代码,即使没有设置语言环境,它也能完美运行。我觉得有些不对劲content?.DateTime
。您可能应该使用的示例代码:
`
let dateFormatter : DateFormatter = DateFormatter()
let locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.locale = locale
guard let date = dateFormatter.date(from: "2020-03-20T19:30:00") else {
fatalError("Could not create date")
}
print(date)
`
推荐阅读
- java - 使用 google 帐户对带有后端的本机桌面应用程序进行身份验证
- c# - 读取用户输入的问题
- c++ - 为什么不在 operator= 中返回 const-reference 而不是引用?
- node.js - 使用 socket.io nodejs 将网络摄像头流和聊天发送到特定房间
- python - 如何在 Windows 10 stackoverflow 中离线安装 mxnet-1.4.1(CPU-Version)?
- python - pathlib path.glob 使用 for 循环问题迭代结果
- regex - 如何对未知数量的字符进行模式匹配
- postgresql - psql 在运行一个 sql 文件时向我显示 : 并询问用户输入
- reactjs - 自动完成 - 将左图标添加到自动完成组件中的文本字段
- javascript - Cheerio 获取图像源