1

NSDateComponents次の文字列を使用して日付を作成しています。

"2014-05-17 02:39:00 PM +0000"

すべてのコンポーネントを設定して NSDate を返すと、次のようになります (以下の方法を参照)。

"2014-05-17 02:39:00 AM +0000"

私の質問は、AM/PM を に指定する方法はありますNSDateComponentか、それとも、ソースの日付が PM の場合、自分の時間に 12 を足すだけですか?

- (NSDate *)dateFromYear:(int)year month:(int)month day:(int)day hour:(int)hour minute:(int)minute {
    NSDateComponents *components = [[NSDateComponents alloc] init];
    [components setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    [components setYear:year];
    [components setMonth:month];
    [components setDay:day];
    [components setHour:hour];
    [components setMinute:minute];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    return [calendar dateFromComponents:components];
}
4

1 に答える 1

1

どうやら、NSDateComponentsはこれを指定していないようです。それに関するApple自身のドキュメントには、次のように書かれています。

重要: NSDateComponents オブジェクト自体は無意味です。どのカレンダーに対して解釈されるかを知る必要があり、値が単位の絶対値なのか単位の量なのかを知る必要があります。

12 時間のロジックとは別に、AM/PM を使用する NSDate クラスのdateWithNaturalLanguageStringを代わりに使用して、何らかの目的で使用することができます。

于 2012-11-01T15:03:39.497 に答える