久久久久久久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)
主站蜘蛛池模板: 九七午夜剧场福利写真 | 激情 亚洲 | 亚洲日本乱码在线观看 | 国产精品美女久久久免费 | 欧美福利网站 | 黄色男女网站 | 国产精品日韩欧美一区二区三区 | 午夜伦理影院 | 一区二区三区不卡视频 | 成人福利网| 色婷婷一区 | 激情久久av一区av二区av三区 | 日韩精品久久一区 | 亚洲精品一区二区三区四区高清 | www.久久久久久久久久久 | 中文字幕一级毛片 | 久草免费视 | 精品99久久 | 天堂久久网 | 四虎影院在线观看av | 午夜欧美a级理论片915影院 | 国产精品乱码一区二区三区 | 久久久亚洲一区 | 欧美精品一区二区三区蜜桃视频 | 亚洲成人精品国产 | 亚洲第一av | 精品三区| 国产一区二区在线免费 | 亚洲一区二区三区视频在线 | 日本一区高清 | 国产欧美日韩精品一区 | 免费观看毛片 | 欧美精品一区二区三区四区 在线 | 亚洲自拍偷拍免费视频 | 黄a大片 | 毛片网站在线观看视频 | 伊人狠狠干 | 婷婷国产一区 | 成人精品国产免费网站 | 日韩在线精品强乱中文字幕 | 久久激情网|