2011-10-29 4 views
1

私はよくNSDateの比較方法を使用しますが、2つの日付が年、月、日で等しい場合は同じように考えます。私は比較する前に時間の部分を取り除くために "cleanDate"と呼ばれる手続きをしました。日付を比較する - 時間の部分を見落とす

2011-10-28を午後09時00分00秒 し、いくつかの日付:

-(NSDate*)cleanDate:(NSDate*)date { 
    NSCalendarUnit unitflags; 
    NSDateComponents *component; 
    NSCalendar *calendar; 
    calendar=[[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]autorelease]; 
    unitflags=NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit; 
    component=[calendar components:unitflags fromDate:date]; 
    return [calendar dateFromComponents:component]; //Dato uten klokke  
} 

しかし、私の日付が出てくるよう 2011-10-28午前23時00分00秒

I時間部分が似ているようにしたい、例えば00:00。

何が間違っていますか?それは夏時間と関係がありますか?その他?ありがとう。これは、タイムゾーンの問題であるように

+0

例:OLD 2011-11-01 13:04:33 +0000 NEW 2011-10-31 23:00:00 +0000 間違った日であることも... – folium

答えて

0

は、私はのNSLogは、ローカルタイムゾーンをデフォルトとするだろうと思っ ...ようだ -

Date with GMT time zone is: Sat, 29 Oct 2011 22:00:00 GMT+00:00 
Date with system time zone is: Sun, 30 Oct 2011 00:00:00 GMT+02:00 
NSlog shows 2011-10-29 22:00:00 +0000 

When using NSLog(@"NSlog shows %@",finalDate); it seems to print the GMT time... 
When using this code - I will get the local date in my time zone: 

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss z"]; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
NSString *dateString = [dateFormatter stringFromDate:myDate]; 
NSLog(@"Date with system time zone is: %@",dateString); 

...しかし、GMTにデフォルト設定のようです...だから私の元のcleanDateは実際に私が望むことをやっているようだ...

2
-(NSDate*)cleanDate:(NSDate*)date { 

      NSDateComponents *comps = [[NSCalendar currentCalendar] 
              components:NSDayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit 
              fromDate:date]; 
       [comps setHour:0]; 
       [comps setMinute:0];  
       [comps setSecond:[[NSTimeZone systemTimeZone] secondsFromGMT]]; 

      return [[NSCalendar currentCalendar] dateFromComponents:comps]; 
} 
+0

ありがとう。 OLD 2011-11-01 13:04:33 +0000。 NEW 2011-11-01 01:00:00 +0000。私は正しい日になる...秒は大丈夫です、分は大丈夫です...時間は01です....しかし、01に固定されている限り、そのok ...これは期待どおりですか? – folium

関連する問題