An NSDate
doesn't have a time zone. It's a moment in time. A moment exists across all time zones. The string it gives from -description
has to pick a time zone in order to represent the moment, because that's the way we write dates and times, but which it picks is arbitrary. The time zone used for the description in no way represents any fundamental fact about the nature of the NSDate
object.
If you want to format a date into a string, don't use -description
because it's not well-defined. (For example, which time zone it uses has changed before with the version of OS X and could change again.) Use an NSDateFormatter
. You can configure an NSDateFormatter
with a time zone by setting its timeZone
property.
If you want to get information about the date, like month, day, hour, minute, etc., use NSCalendar
and NSDateComponents
.