久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

將要通過網絡發送/接收的日期(絕對時間)轉換為

Convert a Date (absolute time) to be sent/received across the network as Data in Swift?(將要通過網絡發送/接收的日期(絕對時間)轉換為 Swift 中的數據?)
本文介紹了將要通過網絡發送/接收的日期(絕對時間)轉換為 Swift 中的數據?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在尋找一種 Swifty 方式來生成時間戳.

I am looking for a Swifty way to generate a timestamp.

我的 macOS 應用程序會記錄一些數據并在數據創建時間上打上標記.然后,數據將通過網絡發送(作為 Data)在 iPad 上重建.

My macOS app logs some data and stamps it with the time the data was created. The data will then be sent across the network (as Data) to be reconstructed on an iPad.

是否有任何 Swift 類可以生成時間戳?國安日期?NSTimeIntervalSince1970?CFAbsoluteTimeGetCurrent()

Is there any Swift class that will work to generate the timestamp? NSDate? NSTimeIntervalSince1970? CFAbsoluteTimeGetCurrent()

要求是:

  1. 將時間戳存儲在盡可能少的字節中(pref. Int)
  2. 與真實的地球時間有些相似(我寧愿不生成我的自己的時間格式)
  3. 毫秒精度
  4. 快速構建
  5. iOS 9+、macOS 10.10+

推薦答案

您可以發送您的 Date 并將其轉換為 Data(8 字節浮點)并返回日期如下:

You can send your Date converting it to Data (8-bytes floating point) and back to Date as follow:

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) }
}

<小時>

游樂場測試


Playground Testing

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

這篇關于將要通過網絡發送/接收的日期(絕對時間)轉換為 Swift 中的數據?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

how to set scrollview content size in swift 3.0(如何在 swift 3.0 中設置滾動視圖內容大小)
Create partial-screen UIPageViewController programmatically(以編程方式創建部分屏幕 UIPageViewController)
UIImageView zoom and pinch in UIScrollView(UIImageView 在 UIScrollView 中縮放和捏合)
Make background color change during scroll(在滾動期間更改背景顏色)
How to set UIScrollView Height in Swift(如何在 Swift 中設置 UIScrollView 高度)
Disable UIPageViewController bouncing - Swift(禁用 UIPageViewController 彈跳 - Swift)
主站蜘蛛池模板: 女生羞羞网站 | 一区二区三区四区在线播放 | 久久99久久98精品免观看软件 | 色嗨嗨 | 黄色国产 | 日韩免费一二三区 | 国产成人精品a视频一区www | 欧美日韩手机在线观看 | 久久精品一 | aa级毛片毛片免费观看久 | 日韩国产欧美一区 | av中文字幕在线播放 | 一区二区免费视频 | 成人高清在线 | 手机在线一区二区三区 | 成人深夜福利网站 | 欧美精品乱码久久久久久按摩 | 欧美 日本 国产 | 性色视频 | 国产日韩欧美 | 国产精品自在线 | 国产精产国品一二三产区视频 | 欧美 日韩 国产 在线 | 男女污污网站 | 午夜视频在线观看网站 | 国产伊人精品 | 亚洲国产精品久久久久婷婷老年 | 精精国产xxxx视频在线野外 | 在线视频亚洲 | 国产精品99久久久久久动医院 | 男女视频在线看 | 国产亚洲欧美日韩精品一区二区三区 | 精品中文字幕一区二区 | 免费久| 北条麻妃99精品青青久久 | 秋霞性生活| 黄一级| 欧美天堂 | 羞羞视频在线观免费观看 | 欧美日韩国产一区二区三区 | 日本久久综合网 |