This question already has answers here:
How to convert a date string with optional fractional seconds using Codable in Swift4
(3个答案)
去年关门了。
我使用JSONEncoder/Codable轻松序列化对象。对象包含日期值。
我希望将日期值转换为不带小数的unix秒。但是,对于任何编码器,您都可以设置dateEncodingStrategy。secondsSince1970提供了一个十进制,在这里我只寻找秒精度。可以选择使用自定义DateFormatter,但是我找不到输出unix秒的dateFormat值。
注意,我知道备份选项将完全重写可编码结构的encode方法,但是我希望不这样做。
例子:
struct SomethingCodable: Codable {
  let date: Date
}

let encoder = JSONEncoder()

// Will encode to this format: 1521744936.301688
encoder.dateEncodingStrategy = .secondsSince1970

// Could use a custom DateFormatter?? Wish for: 1521744936
encoder.formatted(aDateFormatter)

最佳答案

答案是:

jsonEncoder.dateEncodingStrategy = .custom({ (date, encoder) throws in
    var container = encoder.singleValueContainer()
    let seconds: UInt = UInt(date.timeIntervalSince1970)
    try container.encode(seconds)
})

关于ios - Swift DateFormatter转换为Unix秒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49436772/

10-09 16:35