ios - Swift DateFormatter 到 unix 秒

标签 ios swift

<分区>

我正在使用 JSONEncoder/Codable 轻松序列化一个对象。该对象包含日期值。

我希望将日期值转换为不带小数的 unix 秒。对于任何编码器,您都可以设置 dateEncodingStrategy,但是 .secondsSince1970 提供小数,而我只需要秒精度。可以选择使用自定义 DateFormatter,但是我找不到输出 unix 秒的 dateFormat 值。

请注意,我知道备份选项将完全覆盖 Codable 结构的编码方法,但我不希望这样做。

例子:

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/

相关文章:

ios - 将 NSString 转换为 NSDictionary

javascript - 如何使用 LoadHTMLString 方法在 WebView 中加载大型 HTML 字符串?

ios - SIGABRT 每次触摸点击,不一致的 iPad iOS

java - 如何在 Swift 中向上传递错误堆栈跟踪

ios - Core Audio Matrix Mixer 在设置输入或输出元素数量时卡住并滥用内存

ios - Xcode 创建一个本身使用 cocoapods 的 swift 框架

ios - 在 UIButton 之间滑动

ios - Coredata 链接关系

ios - 将数据字符串转换为 UTF8 时出现问题

arrays - 用一个条件过滤多个数组