栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将日期(绝对时间)转换为通过Swift在网络上作为数据发送/接收的日期?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将日期(绝对时间)转换为通过Swift在网络上作为数据发送/接收的日期?

您可以

Date
将其转换为
Data
(8字节浮点数)并将其发送回
Date
如下:

extension Numeric {    var data: Data {        var source = self        return .init(bytes: &source, count: MemoryLayout<Self>.size)    }    init<D: DataProtocol>(_ data: D) {        var value: Self = .zero        let size = withUnsafeMutableBytes(of: &value, { data.copyBytes(to: $0)} )        assert(size == MemoryLayout.size(ofValue: value))        self = value    }}

extension UInt64 {    var bitPattern: Double { .init(bitPattern: self) }}

extension Date {    var data: Data { timeIntervalSinceReferenceDate.bitPattern.littleEndian.data }    init<D: DataProtocol>(data: D) {        self.init(timeIntervalSinceReferenceDate: data.timeIntervalSinceReferenceDate)    }}

extension DataProtocol {    func value<N: Numeric>() -> N { .init(self) }    var uint64: UInt64 { value() }    var timeIntervalSinceReferenceDate: TimeInterval { uint64.littleEndian.bitPattern }    var date: Date { .init(data: self) }}

游乐场测试

let date = Date() // "Nov 15, 2019 at 12:13 PM"let data = date.data         // 8 bytesprint(Array(data))// "[25, 232, 158, 22, 124, 191, 193, 65]n"let loadedDate = data.date   // "Nov 15, 2019 at 12:13 PM"print(date == loadedDate)    // "true"


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/636344.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号