2

NSString を NSDate に変換する必要がありますが、次のコードは、ユーザーのデバイスが 24 時間制に設定されていない場合にのみ機能します。

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

NSString *aTime = @"2/11/2013 12:00:00 AM";
NSDate *aDate = [formatter dateFromString:aTime];

ただし、デバイスが 24 時間制の場合、aDate は null を返します。何か助けはありますか?

4

3 に答える 3

8

QA1480で説明されている動作の副作用が見られると思います。Apple は、開発者がロケールに正しく従わないと思われる問題を、ユーザーが明示的に拒否しない限り、規定の日付形式を変更することで解決しました。

以下を追加することでそれを実現できます。

formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
      /* and autorelease if not using ARC */

これは基本的に、「設定したばかりの日付形式は明示的に私が望むものです。決して変更しないでください」と言っています。

于 2013-02-16T00:45:24.513 に答える