2012-01-06 15 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地域形式の問題

あなたは、次のように2つの日付を比較することができ
+1

を助けることができると思います。..整数で日付のすべてのパラメータを比較するための拡張された日付クラス内の1つのより多くのメソッドを実装"em/fm"ではなく、24時間制を使用します。 – Emil

答えて

1

...

==>

#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 

実装クラス(.Hなどの.mファイル)建てNSDateクラスに延び:

#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); 

は私がスウェーデンを考えて、それはあなた

に関して、 ニール