【 在 ylh0315 的大作中提到: 】
: 如果有夏时制,或跨时区计算时间怎么办?
: 如在美国的铁路列车时刻表。
: 所以,基础时间变量只能以格林威治时间为准,以某个时间原点为起点,按一定时间粒度计量的一个整数。所有的时间点都采用这个坐标系计算。最后,转换为你习惯的格式显示出来。
我觉得其实就是一层抽象, 通过抽象, 屏蔽了不同时钟体系的差异,
最主要的一个差异就是, 闰年和闰秒的存在, 一个简单的例子,2001年减去1998年,
年的粒度下是3, 但是天的粒度下,没有办法直接3*365来得到天数,同理,
由于闰秒的存在, 同样的, 如果间隔是3分钟, 同样不能简单的得到180秒的结论。
闰年取决于使用的日历,那么润秒呢? 取决于所选用的时钟,
这个格林威治的世界时钟, 和滴答不停的原子时钟是不一样的。还有我们C++库里面经常使用UNIX时间,
Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,其实这个也是不考虑闰秒的。
换句话说, 我们回到1970年1月1日, 并开启一个原子时钟计时, 你用原子时钟计时得到的秒数,和调用UNXI时间函数返回来的是不一样的,因此,离开时钟,谈间隔,是会犯错误的。
而这个类库,则帮我们做了这些抽象,是我们不需要理解这么复杂的东西。
当然,现实是, 作为一个C++程序员, 小到一个字符编码, 数字精度表示, 大到一个系统,还都得弄懂。
--
FROM 124.126.3.*