2012-01-06 122 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); 

在延長日期類實現一個多種方法比較日期它們是整數的所有參數..

希望它可以幫助你

問候, 尼爾