2014-11-21 31 views
2

所以我的困境是,我無法弄清楚如何將日期存儲在只有一個整數(取使用:轉換的NSDate一個整數

NSDate* date = [NSDate date] 

我發現這個代碼在網上,這似乎類似於我需要(我認爲改變setDateFormat到@「DD」將工作過(但顯然沒有)

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

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

NSString *stringFromDate = [formatter stringFromDate:date]; 

我只是忘記了整數簡單的東西?

+1

'-timeIntervalSince1970',然後' - initWithTimeIntervalSince1970:'。實際的'NSTimeInterval'是一個普通的'double',但是如果你不需要片段部分,你可以將它轉換爲'NSInteger'。 – holex 2014-11-21 15:31:56

回答

3

使用ddsetDateFormat:

這將只給日期,但在字符串。你可以在integerValue的幫助下將字符串轉換爲整數。

編輯:

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


NSString *stringFromDate = [formatter stringFromDate:[NSDate date]]; 
NSInteger integerDate = [stringFromDate integerValue]; 
+0

所以就像[formatter setDateFormat:@「dd」];? 我試過之前無果 編輯:你知道如何將它存儲在整數? – CallMeGreeny 2014-11-21 10:37:51

+0

@CallMeGreeny:檢查完整實現 – 2014-11-21 10:49:06

+0

@AnoopVaidya是否可以直接將NSDate轉換爲NSInteger而不使用NSString? – 2016-04-21 08:06:35

2

斯威夫特

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) 

做好DoubleInt轉換會導致丟失毫秒。如果您需要毫秒,然後乘以1000,然後轉換爲Int

IntNSDate

包括反向的完整性。

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

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

我也用timeIntervalSinceReferenceDate代替timeIntervalSince1970只要我是一致的。這是假設時間間隔以秒爲單位。請注意,Java使用毫秒。

更新

隨着斯威夫特3,轉換將使用Date,而不是NSDate。 Swift 3版本請參閱this answer

0

儘管我相信原來的海報只是在尋找日期中的'天'部分,但我想象給定標題時,其他人會想到這個問題,尋找一種方法將日期轉換爲規範的整數表示例如自紀元以來的毫秒)。

可可日期庫將日期存儲爲自00:00:00 UTC on 1 January 2001以來的浮點數秒。

要獲得該值,請致電[NSDate timeIntervalSinceReferenceDate]。要獲得自Unix時代以來的秒數(浮點數),請致電[NSDate timeIntervalSince1970]。要獲得毫秒,只需乘以1000。

因此,得到的毫秒數,因爲Unix的時代,作爲一個整數:

(NSInteger)round([NSDate timeIntervalSince1970] * 1000)