3

次のコードは、24 時間形式で機能しています。

+ (NSString *)formatDate:(NSDate *)date useLongStyle:(BOOL)useLongStyle showDate:(BOOL)showDate showTime:(BOOL)showTime
{
    NSDateFormatter *dateFormatter = [NSDateFormatter new];

    dateFormatter.dateStyle = (useLongStyle) ? NSDateFormatterLongStyle : NSDateFormatterShortStyle;
    dateFormatter.dateStyle = (showDate) ? dateFormatter.dateStyle : NSDateFormatterNoStyle;
    dateFormatter.timeStyle = (showTime) ? NSDateFormatterShortStyle : NSDateFormatterNoStyle;

    return [dateFormatter stringFromDate:date];
}

ただし、電話機の設定に 12 時間形式がある場合は、 を返しますnil。地域をオーストラリアなどに明示的に設定するまで。

時間dateは 24 時間形式です。現在のロケールはru_RU(ただしen_EN、同じです)。

4

2 に答える 2

1

同様の問題があり、2つの解決策が見つかりました。1 つはロケールを手動で設定すること (24 時間形式の en_GB を選択) で、もう 1 つはタイムゾーンを設定することです。どちらも私のために個別に機能しました。タイムゾーンに応じて変更する必要がある日付を処理する予定がない場合は、ロケールを設定することをお勧めします。タイムゾーンを処理する場合、ソースと宛先のタイムゾーンが関係し、絶対に必要でない限り、すべてを処理する必要がないからです。したがって、ロケールを設定してみてください。それ以外の場合は、タイムゾーンを選択してください。どういうわけか、システム設定を上書きするのに役立ちました。

[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
于 2013-05-27T11:29:07.110 に答える