将日期格式化为secounds

时间:2015-10-02 10:55:08

标签: ios objective-c date

背景:我将日期存储在文件中。

我想做什么:我想在几秒钟内区分两个日期。我无法找到任何办法。我的日期格式如下:

2015-23-02-12-23-43

3 个答案:

答案 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“(我使用人类可读的日期格式字符串进行讨论,而不是那些用于设置日期格式化程序的字符串。)