背景:我将日期存储在文件中。
我想做什么:我想在几秒钟内区分两个日期。我无法找到任何办法。我的日期格式如下:
2015-23-02-12-23-43
答案 0 :(得分:0)
试试这个:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:EnterYourStringHere];
NSString *str = [dateFormatter stringFromDate:date];
答案 1 :(得分:0)
试试这个:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-mm-dd-hh-mm-ss"];
NSDate *date = [dateFormatter dateFromString:string1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];
答案 2 :(得分:0)
如果您只需要几秒钟,请使用
NSTimeInterval dateInterval = [date timeIntervalSince1970];
然后
NSString secondsString = [NSString stringWithFormat: @"%.0f", dateInterval];
如果您的文件中包含与您的示例2015-23-02-12-23
类似的日期字符串,那么您可以使用以下代码:
NSDateFormatter *myFormatter = [[NSDateFormatter alloc] init];
[myFormatter setDateFormat:@"yyyy-mm-dd-hh-mm-ss"];
//an example - you'll read from your file
NSString *aDateString = @"2015-23-02-12-23";
NSDate aDate = [myFormatter dateFromString: aDateString];
NSTimeInterval dateSeconds = [aDate timeIntervalSince1970];
这将为dateSeconds提供一个双精度浮点数,这是数字日期计算的标准,因为它处理的是几分之一秒。然后,您可以对日期的时间间隔进行数字比较。
请注意,大多数UNIX系统使用timeIntervalSince1970
方法返回的数值,但Mac和iOS使用方法timeIntervalSinceReferenceDate
返回的数字日期值。这两种方法有不同的“纪元日期”,或者从零开始计算的日期。
timeIntervalSince1970 uses midnight on Jan 1, 1970 (GMT)
timeIntervalSinceReferenceDate uses midnight on Jan 1, 2001 (GMT)
您使用的由您自己决定,请务必在所有情况下使用相同的方法。
顺便说一下,你的日期字符串格式太可怕了。所有这些由破折号分隔的2位数字并不能让读者分辨出月/日/小时/分钟/秒。这都是混乱。使用标准日期格式会好得多。
在美国,通常以mm / dd / yyyyy(或yyyy / mm / dd,甚至yyyy / dd / mm)的形式显示日期,时间为hh:mm:ss,因此在“mm / dd / yyyyy hh:mm:ss“你得到的格式:”09/02/2015 13:09:39“(我使用人类可读的日期格式字符串进行讨论,而不是那些用于设置日期格式化程序的字符串。)