代码之家  ›  专栏  ›  技术社区  ›  Amagrammer

iPhone:将Oracle时间戳转换为nsdate或unix时间戳(例如double)

  •  3
  • Amagrammer  · 技术社区  · 14 年前

    有没有一个好的+简单的方法将Oracle时间戳转换为iPhone上的nsdate对象?我已经要求我的客户给我一个带有时间戳的数据库作为Unix时间戳(两倍于0=1970年初),但这对他们来说似乎是个问题。谢谢。

    注意:可以很容易地将UNIX时间戳转换为nsdate,

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

    我需要做的是将Oracle时间戳转换为双精度时间戳,也就是unix时间戳。剩下的很容易。

    更多信息:我需要Objective-C代码在iPhone上运行,使用nsstrings表示Oracle时间戳格式的日期。 Another StackOverflow thread 建议使用nsdateFormatter,但我不知道要使用哪种格式,该线程中建议的格式化程序的初始化方法会为我生成警告。

    3 回复  |  直到 14 年前
        1
  •  2
  •   a'r    14 年前

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

    (my_date - to_date('01/01/1970','DD/MM/YYYY')) * 86400
    
        2
  •  2
  •   Amagrammer    14 年前

    我的最佳选择是使用以下各项:

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

    我不确定Oracle时间戳有多大的差异,所以如果上面的方法有问题,我想知道。

    谢谢你的回答。我将把这个问题留给其他方法来讨论。

        3
  •  2
  •   PostCodeism    14 年前

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

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

    …其中timestampval是表示时间戳值的nsstring对象。