4

チーム、NSDateFormatter を使用して文字列から形成された日付を iOS システムの日付と比較しています。次のステートメントは、システムの日付時刻設定が 24 時間制をオンに設定されている場合は true を返しますが、24 時間制がオフの場合は同じコードが false を返します。

問題のあるコード:

if ([(NSDate*)[NSDate date] compare:currDate] == NSOrderedAscending) {
     // -- Code -- This is executed only when the 4-Hour Time ON
 }

私は混乱しています。日付の取得に使用する文字列は 24 時間形式です。これは問題ですか?それとも何か?

日付形式コード:

-(NSDate *)getDateFromString:(NSString *)dateString{
    NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
    [fmt setDateFormat:@"dd MMM yyyy hh:mm:ss"];
    [fmt setTimeZone:[NSTimeZone systemTimeZone]];
    [fmt setFormatterBehavior:NSDateFormatterBehaviorDefault];  
    return [fmt dateFromString:dateString];
}
4

2 に答える 2

9

Apple のTechnical Q&A 1480を参照してください。

日付フォーマッタのロケールを の特別なロケールに設定する必要がありますen_US_POSIXHHまた、 ではなく24 時間形式を指定する必要がありますhh

-(NSDate *)getDateFromString:(NSString *)dateString{
    NSLocale *posix = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
    NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
    [fmt setLocale:posix];
    [fmt setDateFormat:@"dd MMM yyyy HH:mm:ss"];

    return [fmt dateFromString:dateString];
}
于 2013-05-23T05:48:13.000 に答える