2012-01-06 77 views
0
NSDateFormatter *dtFormatter = [[NSDateFormatter alloc] init]; 
[dtFormatter setDateFormat:@"yyyy-MM-dd hh:mm a"]; 
NSDate *selectedDate = [[NSDate alloc] init]; 
     selectedDate = [dtFormatter dateFromString:[NSString stringWithFormat:@"%@", [appDelegate.aryTime objectAtIndex:i]]];   
    NSLog(@"selected Date: %@", selectedDate); 
    NSLog(@"Today Date: %@", todayDate); 

    int interval = [todayDate compare:selectedDate]; 

我有这段代码。现在,发生的事情是,当我运行应用程序保持英国(他们使用AM和PM)的区域格式(从设置>常规>国际>设置区域格式)时,应用程序将两个日期进行比较。但是,如果我将区域格式更改为瑞典(而不是使用em和fm),则不会比较日期。是否有任何方法可以删除区域格式和比较日期的相关性?我试图在24小时格式转换它们,但没有帮助。NSDate区域格式问题

+1

我认为瑞典使用24小时,而不是“em/fm”。 – Emil 2012-01-06 22:37:49

回答

1

您可以通过以下方式比较两个日期..

==>扩展内置的NSDate类文件(.h和.m文件)

#import <Foundation/Foundation.h> 
struct DateInformation { 
int day; 
int month; 
int year; 
int weekday; 
int minute; 
int hour; 
int second; 
}; 
    typedef struct DateInformation DateInformation; 
    @interface NSDate (Extra) 
    - (DateInformation) dateInformation; 
    @end 

实现类:

#import "NSDate+Extra.h" 

    @implementation NSDate (Extra) 

- (DateInformation) dateInformation 
    { 
DateInformation info; 
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *comp = [gregorian components:(NSMonthCalendarUnit | NSMinuteCalendarUnit | NSYearCalendarUnit |NSDayCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSSecondCalendarUnit) 
             fromDate:self]; 
info.day = [comp day]; 
info.month = [comp month]; 
info.year = [comp year]; 

info.hour = [comp hour]; 
info.minute = [comp minute]; 
info.second = [comp second]; 

info.weekday = [comp weekday]; 


[gregorian release]; 
return info; 
    } 

@end 

您想要与日期进行比较的班级

对两个日期都做了以下操作

NSDate *date=[NSDate date]; 
DateInformation info=[date dateInformation]; 
    NSLog(@"%@",info); 

NSDate *date1=[NSDate dateWithTimeIntervalSinceNow:1242141]; 
DateInformation info=[date1 dateInformation]; 
    NSLog(@"%@",info); 

在延长日期类实现一个多种方法比较日期它们是整数的所有参数..

希望它可以帮助你

问候, 尼尔