The NSDate in the debugger is somewhat misleading, as it gives you the calendar day and time for a specific time zone - UTC / GMT. However, NSDate does not have an inherent time zone or any inherent relation to how people generally perceive and think about dates. Instead, it is a timestamp. Classes like NSDateComponents , NSTimeZone , NSDateFormatter , etc. All exist to provide human context and formatting.
So you see the timestamp formatted in this particular format and the UTC time zone, namely, how NSDate will always be displayed when printing in the debugger or console. If you were to calculate the time zone offset between UTC and your time zone, you will find that the date is a timestamp that you gave it, and not once every few hours.
Carl Veazey
source share