2010-02-24 17 views
3

將Oracle時間戳轉換爲iPhone上的NSDate對象是否有很好的簡便方法?我曾要求我的客戶給我一個帶有時間戳的數據庫作爲Unix時間戳(雙倍於0 = 1970年初),但對他們來說似乎是一個問題。謝謝。iPhone:將Oracle時間戳轉換爲NSDate或Unix時間戳(例如雙精度型)

注意:您可以輕鬆地轉換爲Unix時間戳到一個NSDate與

[NSDate dateWithTimeIntervalSince1970: timestamp] // timestamp is a "double" 

我需要做的是甲骨文時間戳轉換爲雙,又名UNIX時間戳。其餘的很容易。

更多信息:我需要Objective-C代碼在iPhone上使用NSString表示Oracle時間戳格式中的日期。 Another StackOverflow thread建議使用NSDateFormatter,但我不知道要使用什麼格式,並且該線程中建議的格式化程序的初始化方法會爲我生成警告。

回答

2

我不確定轉換爲NSDate,但可以輕鬆地將Oracle日期轉換爲unix時間戳。下面的SQL代碼片段將做到這一點:

(my_date - to_date('01/01/1970','DD/MM/YYYY')) * 86400 
+0

對不起,但我不清楚的背景。 to_date不是iPhone SDK的功能。 (請參閱NSDate部分的原始文章。) – Amagrammer 2010-02-24 16:46:50

+0

@Amagrammer:to_date()是SQL中Oracle中的一個函數。 Ar將打算在檢索出日期值時通過SQL對Oracle數據庫運行此代碼段,或讓您的客戶運行此代碼併爲您提供輸出而不是Oracle日期。 – 2010-02-24 16:51:19

+0

我的歉意,如果我不清楚這一點。 – 2010-02-24 16:52:12

2

它看起來像我的最好的辦法是使用以下命令:

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];  
[formatter setDateFormat:@"MM/dd/yyyy HH:mm a"]; 

我不知道有多少差異存在於甲骨文時間戳,因此,如果上述方法存在問題,我很想知道。

感謝您的其他答案。我將留下這個問題以邀請其他方法。

+0

然後你會完成這個方法:NSDate date = [formatter dateFromString:dateString]; – arlomedia 2012-04-11 20:49:10

2

這是你接受的答案已經是一個恥辱,但是這是做的最好的方式:

NSDate *dateTraded = [NSDate dateWithTimeIntervalSince1970 :[timestampVal integerValue]]; 

...其中timestampVal是代表時間戳值一個NSString對象。

+0

它如何知道timestampVal字符串是MM/dd/yyyy還是dd/MM/yyyy? – Amagrammer 2011-02-05 13:30:56