我有一个Tue May 22 2012 11.00 pm
格式的字符串。现在我需要将其转换为NSDate
,然后获取当前日期和时间表NSDate *currentDate = [NSDate today];
。
然后找到Seconds
之间的时差。
我无法解决这个问题,请帮助我
答案 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
答案 2 :(得分:1)
将两者都转换为time_t
(可能带有mktime
)然后减去。从理论上讲,你应该使用difftime
来计算差异,但实际上time_t
在大多数典型系统上(几乎可以肯定包括MacOS)是一个整数秒,因为一个时代(1970年1月1日午夜为POSIX) ),所以减法工作正常。
当然,夏令时有一些皱纹,其中一些会产生无法解决的歧义。
答案 3 :(得分:1)