将 NSDate 转换为整数

Cal*_*eny 2 integer nsdate ios

所以我的困境是我无法弄清楚如何仅将日期存储在整数值中(使用以下方法获取:

NSDate* date = [NSDate date]
Run Code Online (Sandbox Code Playgroud)

我在网上找到了这段代码,它似乎与我需要的相似(我认为将 setDateFormat 更改为 @"dd" 会起作用(但显然它没有)

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy"];

//Optionally for time zone conversions
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];

NSString *stringFromDate = [formatter stringFromDate:date];
Run Code Online (Sandbox Code Playgroud)

我只是忘记了一些简单的整数吗?

Sur*_*gch 5

迅速

NSDateInt

// using current date and time as an example
let someNSDate = NSDate() 

// convert NSDate to NSTimeInterval (typealias for Double)
let timeInterval = someNSDate.timeIntervalSince1970

// convert to Integer
let myInt = Int(timeInterval)
Run Code Online (Sandbox Code Playgroud)

执行DoubletoInt转换会导致毫秒丢失。如果您需要毫秒,则在转换为Int.

IntNSDate

包括相反的完整性。

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

// create NSDate from Double (NSTimeInterval)
let myNSDate = NSDate(timeIntervalSince1970: timeInterval)
Run Code Online (Sandbox Code Playgroud)

只要我保持一致,我也可以使用timeIntervalSinceReferenceDate代替timeIntervalSince1970。这是假设时间间隔以秒为单位。请注意,Java 使用毫秒。

更新

从 Swift 3 开始,转换将使用Date而不是NSDate. 请参阅Swift 3 版本的此答案