swift - 如何将 stringDateJson 格式化为标签?
问题描述
var str = "2021-05-23T06:35:47.409Z"
var formatter = DateFormatter()
formatter.dateFormat = "MMM d yyyy, h:mm:ss a"
let formattedtoDate = formatter.date(from: str)
let formattedtoString = formatter.string(from: formattedtoDate) //Error Cannot force unwrap value of non-optional type 'String'
cell.date_announce.text = formattedtoString
我正在尝试将字符串格式化为 Date() 并将日期格式化为字符串,以便将值设置为 date_announce 标签。任何人都可以帮助我吗?
解决方案
如果您分解您正在尝试做的事情,实际上有 2 个步骤需要两个不同的日期格式化程序。
- 将输入日期字符串(例如“2021-05-23T06:35:47.409Z”)转换为
Date
- 将 转换
Date
为不同格式的输出字符串。
试试这个代码:
var str = "2021-05-23T06:35:47.409Z"
//Set up a DateFormatter for input dates in "Internet" date format"
var inputFormatter = DateFormatter()
inputFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"
//Set up an output date formatter (in the local time zone)
var outputFormatter = DateFormatter()
outputFormatter.dateFormat = "MMM d yyyy, h:mm:ss a"
if let formattedtoDate = inputFormatter.date(from: str) {
let formattedtoString = outputFormatter.string(from: formattedtoDate)
print("'\(str)' = '\(formattedtoString)'")
} else {
print("Can't convert the string \(str) to a Date")
}
编辑:
(正如 Leo Dabus 在评论中指出的那样,您通常不应dateFormat
在生成用户可见日期字符串的 DateFormatter 中使用固定字符串。最好使用日期和时间样式,并让 DateFormatter 选择适合用户区域设置的特定格式和语言。)
推荐阅读
- c++ - 打印枚举文本而不是值 C++
- powershell - Powershell 中的 Selenium 不适用于 Start-Job 命令
- angular - Angular,Angularfire2,获取数据库中数字的平均值
- audiokit - AudioKit:同步录音机、播放器和节拍器
- python - 在 TCP/IP python 中在哪里添加编码和解码
- c# - Conversation.SendAsync 未在 Bot Framework 默认应用程序中返回
- php - vps的会话问题
- html - 仅在加载“字体系列”时显示文本
- javascript - react-native mapbox 不显示用户位置和注释
- automation - 如何使用soapui进行API测试自动化