首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Swift中将日期转换为整数

在Swift中将日期转换为整数
EN

Stack Overflow用户
提问于 2016-10-08 15:19:39
回答 3查看 58.9K关注 0票数 24

我正在更新我对Swift 3的一些旧的Swift 2答案。不过,My answer to this question并不容易更新,因为这个问题专门要求NSDate而不是Date。因此,我正在创建一个新版本的问题,我可以更新我的答案。

问题

如果我从这样的Date实例开始

代码语言:javascript
复制
let someDate = Date()

我如何把它转换成整数呢?

相关但不同的

这些问题提出了不同的问题:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-08 15:19:39

DateInt

代码语言:javascript
复制
// using current date and time as an example
let someDate = Date()

// convert Date to TimeInterval (typealias for Double)
let timeInterval = someDate.timeIntervalSince1970

// convert to Integer
let myInt = Int(timeInterval)

执行DoubleInt的转换会导致毫秒的丢失。如果需要毫秒,那么在转换为Int之前乘以1000。

IntDate

包括相反的完整性。

代码语言:javascript
复制
// convert Int to TimeInterval (typealias for Double)
let timeInterval = TimeInterval(myInt)

// create NSDate from Double (NSTimeInterval)
let myNSDate = Date(timeIntervalSince1970: timeInterval)

I could have also used `timeIntervalSinceReferenceDate` instead of `timeIntervalSince1970` as long as I was consistent. This is assuming that the time interval is in seconds. Note that Java uses milliseconds.

备注

  • 有关使用NSDate的Swift 2旧语法,请参见this answer
票数 113
EN

Stack Overflow用户

发布于 2020-04-21 13:03:04

如果您正在寻找具有10 Digit seconds since 1970 for API调用的时间戳,那么下面是代码:

仅1行代码用于Swift 4/ Swift 5

let timeStamp = UInt64(Date().timeIntervalSince1970)

print(timeStamp) <--打印当前时间戳

1587473264

代码语言:javascript
复制
let timeStamp = UInt64((Date().timeIntervalSince1970) * 1000) // will give 13 digit timestamp in milli seconds
票数 3
EN

Stack Overflow用户

发布于 2020-04-17 07:49:15

timeIntervalSince1970是一个相关的启动时间,方便,并由苹果提供。

如果你想让int值变小,你可以选择你喜欢的启动时间。

代码语言:javascript
复制
extension Date{
    var intVal: Int?{
        if let d = Date.coordinate{
             let inteval = Date().timeIntervalSince(d)
             return Int(inteval)
        }
        return nil
    }


    // today's time is close to `2020-04-17 05:06:06`

    static let coordinate: Date? = {
        let dateFormatCoordinate = DateFormatter()
        dateFormatCoordinate.dateFormat = "yyyy-MM-dd HH:mm:ss"
        if let d = dateFormatCoordinate.date(from: "2020-04-17 05:06:06") {
            return d
        }
        return nil
    }()
}


extension Int{
    var dateVal: Date?{
        // convert Int to Double
        let interval = Double(self)
        if let d = Date.coordinate{
            return  Date(timeInterval: interval, since: d)
        }
        return nil
    }
}

像这样使用:

代码语言:javascript
复制
    let d = Date()

    print(d)
    // date to integer, you need to unwrap the optional
    print(d.intVal)

    // integer to date
    print(d.intVal?.dateVal)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39934057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档