计算2次之间的时差 - 逻辑问题

时间:2012-05-29 07:31:51

标签: iphone objective-c nsstring nsdate nsdateformatter

我有一个Tue May 22 2012 11.00 pm格式的字符串。现在我需要将其转换为NSDate,然后获取当前日期和时间表NSDate *currentDate = [NSDate today];

然后找到Seconds之间的时差。

我无法解决这个问题,请帮助我

4 个答案:

答案 0 :(得分:2)

  

我的字符串格式为2012年5月22日星期二晚上11点。现在我需要将其转换为NSDate

这部分你需要一个`NSDateFormatter``

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"EEE MM dd yyyy hh.mm a"];
NSDate *dateFromString =[df dateFromString:yourString];

这是第一部分。

现在为

  

然后找到2之间的秒的时差。

NSTimeIntervall diffInSeconds = [dateFromString timeIntervalSinceNow];

这将计算dateFromString和现在之间的秒数。

关于在可可中使用日期和时间的信息,我非常推荐Ole Begemenans "Working with Date and Time in Cocoa Series"

答案 1 :(得分:2)

使用NSDateFormatter将字符串日期从2012年5月22日星期二晚上11点变为NSDate。您还需要在nsdateformatter中设置字符串日期的时区。

示例:

    NSDateFormatter * frmt;
    frmt = [[NSDateFormatter alloc] init];
    frmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    frmt.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];

您需要使用与您的字符串对应的dateFormat。

然后使用

获取nsdate
[frmt dateFromString:(NSString *)dateString]

然后您可以使用-timeIntervalSinceDate

比较两个NSDate

答案 2 :(得分:1)

将两者都转换为time_t(可能带有mktime)然后减去。从理论上讲,你应该使用difftime来计算差异,但实际上time_t在大多数典型系统上(几乎可以肯定包括MacOS)是一个整数秒,因为一个时代(1970年1月1日午夜为POSIX) ),所以减法工作正常。

当然,夏令时有一些皱纹,其中一些会产生无法解决的歧义。

答案 3 :(得分:1)

NSDateFormatter课程的

-dateFromString:方法应该有所帮助。

然后-timeIntervalSinceNow的{​​{1}}给出了时间间隔。您不需要中间步骤NSDate