0

ダラスのようなタイムゾーンで11月3日から1日追加しようとしたのですが、できません。

NSDate *intime = @"2013-11-03 05:00:00 +0000";

NSDate *nextday= [NSDate dateWithTimeInterval:24*3600 sinceDate:intime];

NSDateFormatter *formatter=[[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy"];
NSString *convert=[formatter stringFromDate:nextday];
NSLog(@"convert:%@",convert);

Nslog 値:

intime:  2013-11-03 05:00:00 +0000
nextday: 2013-11-04 05:00:00 +0000
convert: 11/03/2013 23:00:00 // but I need this 11/04/2013.

その方法を教えてください。

前もって感謝します

4

1 に答える 1

1

問題は、 from 文字列intimeを初期化するためにフォーマッタを使用する必要があるということです。NSDateしたがって、私のテスト済みの例は次のようになります。

//  NSDate *intime = @"2013-11-03 05:00:00 +0000"; // wrong

NSString *str =@"2013-11-03 05:00:00 +0000";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ"];
NSDate *intime = [formatter dateFromString:str];

NSDate *nextday= [NSDate dateWithTimeInterval:24*3600 sinceDate:intime];

NSDateFormatter *formatter2=[[NSDateFormatter alloc]init];
[formatter2 setDateFormat:@"MM/dd/yyyy"];
NSString *convert=[formatter2 stringFromDate:nextday];
NSLog(@"%@, %@, %@", intime, nextday, convert);

出力は次のとおりです。

2013-08-08 15:03:23.762 2013-11-03 05:00:00 +0000、2013-11-04 05:00:00 +0000、11/04/ 2013

1 つの小さなコメント:デフォルトでは、XCode は、問題の表示がオンになっているときに、この種の問題をコードに書き出します (設定 -> 一般 -> ライブの問題を表示)。例えば。この場合、XCode は次の問題について警告します。Incompatible pointer types initializing 'NSDate *__strong' with an expression of type 'NSString *'

于 2013-08-08T13:04:18.997 に答える