0

タイムゾーンはいつも私を悩ませました。今回は、NSSTring にある date-time を NSDate に変換する必要があります。

私はこのようなことをしています。

NSString *myStringDate=@"14-11-2012 4:09:00 PM +0500"

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"dd-MM-yyyy h:mm:ss a Z"];

NSDate *aDate = [formatter dateFromString:myStringDate];
NSLog(@"%@",aDate);

しかし、私はこのような出力を持っています

14-11-2012 11:09:00 +0000

また、午前/午後の設定はありません:-(

私が欲しいのは、14-11-2012 4:09:00 PM +0500つまり、文字列にあるのと同じ日時です。

ありがとうございます。

4

3 に答える 3

1

あなたの変換の出力はGMT時間を与えています

NSString *myStringDate=@"14-11-2012 4:09:00 PM +0500"

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"dd-MM-yyyy h:mm:ss a Z"];

NSDate *aDate = [formatter dateFromString:myStringDate];



 NSDateFormatter* df_utc = [[[NSDateFormatter alloc] init] autorelease];
 [df_utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
 [df_utc setDateFormat:@"yyyy.MM.dd G 'at' HH:mm:ss zzz"];

 NSDateFormatter* df_local = [[[NSDateFormatter alloc] init] autorelease];
 [df_local setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
 [df_local setDateFormat:@"yyyy.MM.dd G 'at' HH:mm:ss zzz"];

 NSString* ts_utc_string = [df_utc stringFromDate:aDate];
 NSString* ts_local_string = [df_local stringFromDate:aDate];
于 2012-11-14T11:36:32.483 に答える
0

ここで変更を行う必要があります。

[formatter setDateFormat:@"dd-MM-yyyy h:mm:ss a "];

ありがとう

于 2012-11-14T11:28:21.497 に答える
0

変換は正しいように見えますが、デフォルトの出力は UTC 時間 ( +0000) で、24 時間制であるため、AM/PM の区別がありません (「01:00 PM」は 13:00 になります)。特定の表現が必要な場合は、出力をフォーマットする必要もあります( [formatter stringFromDate:aDate])…</p>

UTC の問題については、選択したタイム ゾーンを の代わりに指定して選択する必要があります[NSTimeZone systemTimeZone][NSTimeZone localTimeZone]手始めに試してみてください。

于 2012-11-14T11:38:50.407 に答える