-1

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

然后找出两者Seconds之间的时间差。

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

4

4 回答 4

2

我有一个格式为 Tue May 22 2012 11.00 pm 的字符串。现在我需要把它转换成 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 “在可可系列中使用日期和时间”

于 2012-05-29T07:38:28.483 回答
2

使用 NSDateFormatter 将您的字符串日期 Tue May 22 2012 11.00 pm 转换为 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]

那么你可以使用比较两个 NSDate-timeIntervalSinceDate

于 2012-05-29T07:41:04.693 回答
1

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

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

于 2012-05-29T07:35:33.743 回答
1

-dateFromString:类方法NSDateFormatter应该有帮助。

然后-timeIntervalSinceNowofNSDate给出时间间隔。您不需要中间步骤[NSDate today]

于 2012-05-29T07:38:30.840 回答