因为：NSDate 是 相对于 01.01.2001 00:00:00 GMT 的 时间差值(即 NSTimeInterval, 类型 double)
注意： NSDate.h 文件中，
978307200.0 刚好是 2001-1970=30年，
499238502.374417 大约为 2016-2001=15年。
iOS中的NSDate对象，本质就是timeInterval(时间差)，和我们平时说的timestamp(时间戳)不同的是，NSDate选取的起点是2001.1.1 00:00 UTC
Why is NSTimeIntervalSince1970 defined as a fixed double?
#define NSTimeIntervalSince1970 978307200.0
It seems to be the UNIX timestamp of 01.01.2001 00:00:00 GMT.
What is it for and why is it a fixed number?
It’s because NSDate’s timeIntervalSinceReferenceDate uses 1 January 2001, GMT as its reference date while other places typically use 1970 (the “Unix epoch”).
It is useful if you want to compare the current time with time stored as an interval since the earlier reference date.
The Difference Between GMT and UTC
Greenwich Mean Time (GMT) is often interchanged or confused with Coordinated Universal Time (UTC). But GMT is a time zone and UTC is a time standard.
Although GMT and UTC share the same current time in practice, there is a basic difference between the two:
- GMT is a time zone officially used in some European and African countries. The time can be displayed using both the 24-hour format (0 - 24) or the 12-hour format (1 - 12 am/pm).
- UTC is not a time zone, but a time standard that is the basis for civil time and time zones worldwide. This means that no country or territory officially uses UTC as a local time.
UTC, GMT and Daylight Saving Time
Neither UTC nor GMT ever change for Daylight Saving Time (DST). However, some of the countries that use GMT switch to different time zones during their DST period.
For example, the United Kingdom is not on GMT all year, it uses British Summer Time (BST), which is one hour ahead of GMT, during the summer months.