Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NSDate TIMEIVERSICENS1970不在Swift中工作?_Swift_Nsdate - Fatal编程技术网

NSDate TIMEIVERSICENS1970不在Swift中工作?

NSDate TIMEIVERSICENS1970不在Swift中工作?,swift,nsdate,Swift,Nsdate,我在swift中这样做: let date = NSDate(timeIntervalSince1970: 1432233446145.0) println("date is \(date)") 日志告诉我: date is 47355-09-02 23:55:45 +0000 然后,我尝试返回一个间隔,仅用于测试: let tI = expirationDate.timeIntervalSinceDate(date) println("tI = \(tI)") 我得到: tI=0.0

我在swift中这样做:

let date = NSDate(timeIntervalSince1970: 1432233446145.0)
println("date is \(date)")
日志告诉我:

 date is 47355-09-02 23:55:45 +0000
然后,我尝试返回一个间隔,仅用于测试:

let tI = expirationDate.timeIntervalSinceDate(date)
println("tI = \(tI)")
我得到:

tI=0.0

我做错了什么?
我似乎可以使通话的时间间隔正常工作。在Swift中是否有已知的发布,或者我在这里遗漏了什么?

您的代码和日志内容如下:

date.isEqual(expirationDate)

-->您的资料刚刚过期:-)。

143223446145
很可能是以毫秒为单位的时间间隔:

Swift 3及更高版本:

let date = Date(timeIntervalSince1970: 1432233446145.0/1000.0)

我认为你的时间戳不正确。这导致您的日期为47355年9月2日

如果我使用以下选项,我会立即获得(大约)的日期:

打印的日期不是本地化的时间戳,所以我想你必须自己做一些本地化。例如:

let formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
println("formatted date is \(formatter.stringFromDate(date))")
// "formatted date is 07-05-2015 20:48:08"
为了完整性,我还检查了比初始日期大1100秒的到期日期:

let expirationDate = NSDate(timeIntervalSince1970: 1431025588)
let diff = expirationDate.timeIntervalSinceDate(date)
println("expires in: \(diff)")
// "expires in: 1100.0"

因此,timeIntervalSince1970似乎运行良好,我认为您的时间间隔不是您想要的时间间隔。

您期望的确切输出是什么?expirationDate中有什么?时间间隔为零。您怎么知道,您不知道expirationDate中有什么?结果为0.0的检查揭示了这一点。没关系,你不明白我的讽刺。时间间隔错了。它是以毫秒为单位的,所以除以1000.0就成功了。简单的修复,谢谢你的关注。
let formatter = NSDateFormatter()
formatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
println("formatted date is \(formatter.stringFromDate(date))")
// "formatted date is 07-05-2015 20:48:08"
let expirationDate = NSDate(timeIntervalSince1970: 1431025588)
let diff = expirationDate.timeIntervalSinceDate(date)
println("expires in: \(diff)")
// "expires in: 1100.0"