0

を持ってNSDate *daおり、印刷すると次の文字列が得られます: 2013-10-24 00:00:00 +0000.

NSDateFormatter *form = [[NSDateFormatter alloc] init];
[form setDateFormat:@"yyyy-mm-dd"];
NSDate *myD = [form dateFromString: @"2013-10-24"];

今私がやりたいことは、 と を比較することNSDate *daですNSDate *myD。一致する場合は、NSLog.

if ([da isEqualToDate:myD]) {    
    NSLog(@"ok");               
} else {
    NSLog(@"bad");
}

問題は、 にmyDなることnullです。どうすればこれを解決できますか?

アップデート

まだフォーマッタに問題があります。ただし、現在は NIL を返しません。

印刷daすると出力が得られ、2013-10-24 13:00:00 +0000印刷myDすると出力が得られます2013-10-23 18:30:00 +0000。これが正しくフォーマットされなかったのはなぜですか。私のコードのフォーマット部分にはまだエラーがあると思います。ヘルプ

更新 2

NSDate *da = [NSDate date]; ///// PRINTS 2013-09-16 11:52:40 +0000

    NSDateFormatter *form = [[NSDateFormatter alloc] init];
    [form setDateFormat:@"yyyy-MM-dd"];
    NSDate *myD = [form dateFromString: @"2013-09-16"]; ////// PRINTS 2013-09-16 00:00:00 +0000
4

5 に答える 5

0

あなたが抱えている問題は、あなたがこれをしていないことだと思います:

[form setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

また、異なるタイムゾーンで時間を作成すると、印刷中にローカルのタイムゾーンにフォーマットされます。

于 2013-09-16T11:30:46.940 に答える
0
    NSString *str1=@"2013-10-24 00:00:00 +0000";
    NSDateFormatter *form = [[NSDateFormatter alloc] init];
    [form setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
    NSDate *date1= [form dateFromString:str1];
    NSLog(@"%@",date1);


    NSString *str2=@"2013-10-24 00:00:00 +0000";
    NSDate *date2= [form dateFromString:str2];

   if ([date1 isEqualToDate:date2]) {
      NSLog(@"Same");
   }
   else
   {
      NSLog(@"Not Same");
  }

私はそれが役に立つことを願っています..

于 2013-09-16T11:58:01.697 に答える
0

次のように日付フォーマッタを変更できます

 [form setDateFormat:@"yyyy-MM-dd"];

そして、あなたはこのように比較することができます..

 NSTimeInterval daInterval = [da timeIntervalSince1970];
 NSTimeInterval myDInterval = [myD timeIntervalSince1970];

 if(daInterval == myDInterval)
    NSLog(@"dates are same..");
于 2013-09-16T11:18:15.713 に答える