2

奇妙な問題:

次のコードで文字列を日付に変換しています:

NSString *dateStr = @"02/10/2012 12:00:13 PM";

NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
[dtF setDateFormat:@"MM/dd/yyyy HH:mm:ss a"];

NSDate *d = [dtF dateFromString:dateStr];
NSDateFormatter *dateFormatStr = [[NSDateFormatter alloc] init];

[dateFormatStr setDateFormat:@"MMMM dd, yyyy HH:mm a"];
NSString *strDate = [dateFormatStr stringFromDate:d];   
NSLog(@"Output:::-->%@",strDate);

Xcode 4.2を使用しています

iOS 5.0 および iPhone 4 を搭載した iOS シミュレータおよびデバイス iPhone 3G および iPad で正常に動作します。

しかし、問題はiOS 5.0.1 を搭載した iPod にあります。iPod では(null)値が表示されます。

コードのどこが間違っていますか? または他の問題はありますか?

4

3 に答える 3

3

NSDateFormatter の出力は、ユーザーの iPhone の設定が原因で不安定になる可能性があることがわかりました。これを使用して、強制的に標準化することができます(詳細は思い出せません)-

[dtF setLocale:enUSPOSIXLocale];

...出力全体をより予測可能にします。

于 2012-04-18T10:37:51.007 に答える
2

むしろやってaみるaaa

コードを次のように置き換えます。

NSString *dateStr = @"02/10/2012 12:00:13 PM";

NSDateFormatter *dtF = [[NSDateFormatter alloc] init];
[dtF setDateFormat:@"MM/dd/yyyy HH:mm:ss a"];

NSDate *d = [dtF dateFromString:dateStr];
NSDateFormatter *dateFormatStr = [[NSDateFormatter alloc] init];

[dateFormatStr setDateFormat:@"MMMM dd, yyyy hh:mm aaa"];
NSString *strDate = [dateFormatStr stringFromDate:d];   
NSLog(@"Output:::-->%@",strDate);

出力:::-->February 10, 2012 12:00 PM

于 2012-04-18T09:24:06.960 に答える
1

解決しました!!!

問題は日付文字列にありましたNSString *dateStr = @"02/10/2012 12:00:13 PM";

時間は「AM/PM」の 24 時間形式ですが、どちらが間違っていると思いますか。AM/PMは 12 時間制である必要があります。

それで、文字列からAM/PMを削除したところ、うまくいきました!!!

コードからも:

[dtF setDateFormat:@"MM/dd/yyyy HH:mm:ss"];
于 2012-04-24T06:34:20.593 に答える