iPhone:将Oracle时间戳转换为NSDate或Unix时间戳(例如双倍)

时间:2010-02-24 16:17:03

标签: iphone oracle timestamp nsdate

是否有一种很好的+简便的方法可以将iPhone时间戳转换为iPhone上的NSDate对象?我已经让我的客户给我一个带有时间戳的数据库作为Unix时间戳(加倍于0 = 1970年开始),但这对他们来说似乎是一个问题。感谢。

注意:您可以使用

轻松地将Unix时间戳转换为NSDate
[NSDate dateWithTimeIntervalSince1970: timestamp]  // timestamp is a "double"

我需要做的是将Oracle时间戳转换为双倍,即Unix时间戳。其余的很容易。

更多信息:我需要使用代表Oracle Timestamp格式的日期的NSStrings在iPhone上运行Objective-C代码。 Another StackOverflow thread建议使用NSDateFormatter,但我不知道要使用什么格式,并且该线程中建议的格式化程序的初始化方法会为我生成警告。

3 个答案:

答案 0 :(得分:2)

我不确定转换为NSDate,但您可以轻松地将Oracle日期转换为unix时间戳。以下SQL代码段将执行此操作:

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

答案 1 :(得分:2)

看起来我最好的选择是使用以下内容:

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

我不确定Oracle时间戳有多少差异,所以如果上述方法存在问题,我很想知道。

感谢其他答案。我将提出问题,邀请其他方法。

答案 2 :(得分:2)

很遗憾你已经接受了这个答案,但这是最好的方法:

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

...其中timestampVal是表示时间戳值的NSString对象。