【问题标题】:Obj-C parse seconds to dd:hh:mm:ssObj-C 将秒解析为 dd:hh:mm:ss
【发布时间】:2015-11-06 11:32:51
【问题描述】:

我正在计算两个日期之间的差异。我已经创建了自己的解决方案:

NSDate *actualDate = [NSDate date];
NSTimeInterval sec = [eveDate timeIntervalSinceDate:actualDate];
int secondsBetween = sec;
int minBetween     = sec / 60;
int hoursBetween   = sec / 3600;
int daysBetween    = sec / 86400;

_lblDays.text  = [NSString stringWithFormat:@"%d", daysBetween];
_lblHours.text = [NSString stringWithFormat:@"%d", hoursBetween % 24];
_lblMin.text   = [NSString stringWithFormat:@"%d", minBetween % hoursBetween];
_lblSec.text   = [NSString stringWithFormat:@"%d", secondsBetween % minBetween];

但我相信对此有更好的解决方案(例如原生类),但我找不到任何东西。你能告诉我如何做得更好吗?

【问题讨论】:

标签: ios objective-c date nsdate intervals


【解决方案1】:

这是另一种计算方式。

NSDateComponents *components = [[NSCalendar currentCalendar] components: NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond
                                                 fromDate: startDate toDate: endDate options: 0];
NSInteger days = [components day];
NSInteger hour=[components hour];
NSInteger minutes=[components minute];
NSInteger sec = [components second];

【讨论】:

  • 尤其是这样做的正确方法,因为它尊重时间切换。
【解决方案2】:

您可以使用 NSCalendarNSDateComponents 类来执行此操作:

NSCalendar *calendar         = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond fromDate:actualDate toDate:eveDate options:0];
NSLog(@"Days->%d Hour->%d, Minute->%d, Second->%d", components.day, components.hour, components.minute, components.second);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    相关资源
    最近更新 更多