首页 > 解决方案 > 如何将 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 标签。任何人都可以帮助我吗?

标签: swift

解决方案


如果您分解您正在尝试做的事情,实际上有 2 个步骤需要两个不同的日期格式化程序。

  1. 将输入日期字符串(例如“2021-05-23T06:35:47.409Z”)转换为Date
  2. 将 转换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 选择适合用户区域设置的特定格式和语言。)


推荐阅读