iOS中的日期转换

时间:2015-10-19 15:07:10

标签: ios objective-c nsdate

我必须将日期(来自服务器)与今天的日期进行比较。服务器的日期格式不同(即日期格式可能是2015-09-08或2015-09-08T11:30:00 + 0530)

我们如何在iOS(Objective-C)中将这些不同的日期格式与今天的日期进行比较。

2 个答案:

答案 0 :(得分:2)

实际上,无论您是否要比较不同格式的2个日期,问题是要比较您必须确保的日期值 1.它们被转换为相同的时区。
2.使用 - (NSComparisonResult)比较:(NSDate *)anotherDate方法

此外,如果您想将日期字符串响应从HE转换为NSDate,您可以执行以下操作

+ (NSDate *)dateFromDateString:(NSString *)dateString withFormat:(NSString *)format {
    NSDateFormatter *formatter = [NSDateFormatter new];
    formatter.dateFormat = format;
    return [formatter dateFromString:dateString];
}

此外,在比较特定组件中的2个日期(例如年,月,日和没有小时,分钟或秒)时,您必须使用NSDateComponents

- (BOOL)date:(NSDate *)aDate isEqualToDateIgnoringTime:(NSDate *) anotherDate
    {
        NSCalendarUnit unitFlags = (NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond);
        NSDateComponents *components1 = [[NSCalendar currentCalendar] components:unitFlags fromDate:aDate];
        NSDateComponents *components2 = [[NSCalendar currentCalendar] components:unitFlags fromDate:anotherDate];
        return ((components1.year == components2.year) && (components1.month == components2.month) && (components1.day == components2.day));
}

答案 1 :(得分:1)

试试这个

  -(void)dateFormateTest{
 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[formatter setTimeZone:[NSTimeZone defaultTimeZone]];
[NSTimeZone resetSystemTimeZone];
NSDate *date = [formatter dateFromString:@"2015-10-06 12:39:12"];
NSLog(@"date: %@",date);

NSComparisonResult result = [date compare:[NSDate date]];
if (result == NSOrderedDescending) {
    NSLog(@"Past");
}else if (result == NSOrderedDescending) {
    NSLog(@"future");
}


}