0

重複の可能性:
NSDateFormatter が正しく表示されない

次の手法を使用して日付のみに変換する NSDate を使用しています。

+ (NSDate *) dateOnly:(NSDate *)date
{
    long time = [date timeIntervalSinceReferenceDate];
    long timeMod = time % kNumSecondsInDay;
    NSTimeInterval newTime = time - timeMod;

    return [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:newTime];
}

これは私に期待される結果を与えています:

    NSLog(@"Due Date:%@", _dueDate);

--> 期日: 2012-11-21 00:00:00 +0000

ただし、日付フォーマッターを使用すると、1日前になります。

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterShortStyle];
    NSString *result = [formatter stringFromDate:_dueDate];
    NSLog(@"Result: %@", result);

--> 結果: 2012 年 11 月 20 日

何を与える?

4

1 に答える 1

3

タイムゾーン。日付は UTC 11/21 の午前 0 時です。タイム ゾーンが UTC より遅れている場合は、11/20 になります。

于 2012-11-21T18:26:26.397 に答える