【问题标题】:Best way to store a 'time' value存储“时间”值的最佳方式
【发布时间】:2010-11-15 14:21:07
【问题描述】:

我的班级需要两个属性:startTimeendTime。最好使用什么类?我知道有 NSDate,但我只需要存储一个特定的时间(介于 00:00-23:59 之间),我不需要日期。这里最优雅的解决方案是什么?

【问题讨论】:

    标签: iphone objective-c cocoa-touch nsdate


    【解决方案1】:

    NSTimeInterval 可能已经足够了。

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

    例如。 5 分钟 = 300.0

    【讨论】:

      【解决方案2】:

      我相信最优雅的解决方案,也是您想要的,是 NSTimeInterval,这是 NSDate 构建在上面的原始类型。

      NSTimeIntervaldouble 的类型定义,是以秒为单位的时间度量。这种原始时间类型没有任何参考日期的概念。 NSDate 所做的是添加这个参考日期的概念,并将 0.0 时间锚定在 2001 年 1 月 1 日 GMT。没有什么可以阻止您发明自己的参考日期锚点,例如“任何一天的午夜”。 p>

      您可以做的是将NSTimeInterval 的两个属性添加为startTimeendTime,并让它们都使用midnight 作为参考。或者您可以跳过endTime 并选择startTimeduration 组合。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          NSDate 类类似于 C# 中的 DateTime 类:两者都保存日期和时间,但它们可以相互独立。在 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;
          

          【讨论】:

            猜你喜欢
            • 2015-05-11
            • 2020-10-25
            • 2012-07-15
            • 2017-07-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多