Расчет DayInEra несовместим с DayInYear

Если у меня свидание поздно вечером, и я живу на восточном побережье США, мои расчеты DayInEra, похоже, не включают смещение часового пояса. Но мой расчет DayInYear работает отлично.

Я поместил следующее на игровой площадке, чтобы изолировать проблему от моего кода:

var dateLastNite : NSDate = NSDate(timeIntervalSince1970: 1430190884.0)
var dateMorning : NSDate = NSDate(timeIntervalSince1970: 1430224884.0)
var dateEvening : NSDate = NSDate(timeIntervalSince1970: 1430276884.0)

var curCal : NSCalendar = NSCalendar.currentCalendar()
var tz : NSString = curCal.timeZone.abbreviation!

var dayOfYearPast : NSInteger = curCal.ordinalityOfUnit(NSCalendarUnit.CalendarUnitDay, inUnit: NSCalendarUnit.CalendarUnitYear, forDate: dateLastNite)
var dayOfYearAM   : NSInteger = curCal.ordinalityOfUnit(NSCalendarUnit.CalendarUnitDay, inUnit: NSCalendarUnit.CalendarUnitYear, forDate: dateMorning)
var dayOfYearPM   : NSInteger = curCal.ordinalityOfUnit(NSCalendarUnit.CalendarUnitDay, inUnit: NSCalendarUnit.CalendarUnitYear, forDate: dateEvening)

var dayOfEraPast : NSInteger = curCal.ordinalityOfUnit(NSCalendarUnit.CalendarUnitDay, inUnit: NSCalendarUnit.CalendarUnitEra, forDate: dateLastNite)
var dayOfEraAM   : NSInteger = curCal.ordinalityOfUnit(NSCalendarUnit.CalendarUnitDay, inUnit: NSCalendarUnit.CalendarUnitEra, forDate: dateMorning)
var dayOfEraPM   : NSInteger = curCal.ordinalityOfUnit(NSCalendarUnit.CalendarUnitDay, inUnit: NSCalendarUnit.CalendarUnitEra, forDate: dateEvening)

Результат DayOfYearPast равен 117, а у AM и PM - 118

Но для DayOfEraPast и dayOfEraAM я получаю 735716 И DayOfEraPM я получаю 735717

Любое объяснение того, почему результаты эпохи не были: 735716 735717 735717, как я ожидал

1 ответ

Решение

При использовании бита эры эра основывается на абсолютном моменте времени (когда родился JC). Тот факт, что ваши местные часы прошли полночь от dateLastNite до dateMorning, не гарантирует, что момент времени прошел 24-часовой переход (как компьютер с начала эпохи).

См. Листинг 13 и 14:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendricalCalculations.html

Другие вопросы по тегам