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

存储“时间”值的最佳方法

  •  1
  • Rits  · 技术社区  · 15 年前

    我的课程需要两个属性: startTime endTime . 什么是最好的课程?我知道有NSDate,但我只需要存储一个特定的时间(在00:00-23:59之间),我不需要日期。这里最优雅的解决方案是什么?

    4 回复  |  直到 15 年前
        1
  •  3
  •   Jasarien    15 年前

    NSTimeInterval可能已经足够好了。

    它以秒为单位将时间值存储为双精度值。

    例如5分钟=300.0

        2
  •  1
  •   PeyloW    15 年前

    我相信最优雅的解决方案,你想要的是 NSTimeInterval ,这是 NSDate 是建在上面的。

    时间间隔 是的typedef double ,是以秒为单位的时间度量。此原始时间类型没有任何引用日期的概念。什么 N日期 要做的是添加这个参考日期的概念,并将0.0时间锚定在2001年1月1日格林尼治标准时间。没有什么可以阻止你发明自己的时间 参考日期 ,例如 “无论是什么日子的午夜” .

    您可以做的是添加 时间间隔 或者作为 startTime endTime 让他们两个都用 午夜 作为参考。或者你可以跳过 结束时间 去争取一个 开始时间 duration 联合体。

        3
  •  0
  •   user23743user23743    15 年前

    NSDateComponents ,它“还可用于指定持续时间,例如5小时16分钟。”

        4
  •  0
  •   Evan Mulawski    15 年前

    这个 NSDate 类与 DateTime C#类:两者都有日期和时间,但它们可以相互独立。在Cocoa中,您将比较两个NSDate类:

    //Create NSDate objects in the time format
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH:mm:ss"];
    NSString *startTimeString = @"00:00:00"; //0 seconds
    NSString *endTimeString = @"00:00:52"; //52 seconds
    NSDate *startTime = [dateFormatter dateFromString:startTimeString];
    NSDate *endTime = [dateFormatter dateFromString:endTimeString];
    
    //Compare the time
    BOOL date1before2 = [startTime compare:endTime] == NSOrderedAscending;