Reputation: 210
If I have a date late in the evening and I live on the US East coast, my DayInEra calculation seems to not be including the timezone offset. But my DayInYear calculation works fine.
I put the following in a playground to isolate the issue from my code:
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)
The DayOfYearPast result is 117 and both the AM and PM have 118
But for DayOfEraPast and dayOfEraAM I get 735716 And DayOfEraPM I get 735717
Any explanation of why the era results were not: 735716 735717 735717 as I expected
Upvotes: 0
Views: 111
Reputation: 790
When using the era bit, the era is based on an absolute moment in time (when JC was born). The fact that your local clock passed midnight from dateLastNite to dateMorning does not guarantee that the moment in time passed a 24 hour crossover (as computer from the beginning of the era).
See Listing 13 and 14:
Upvotes: 1