原文连接:http://blog.csdn.net/gaoch_2000/article/details/5173023
如果对时间的要求没有那么精确(能够忍受1秒以内的误差),那么没有必要来研究这三个时间的区别,北京时间=UTC+8=GMT+8。
先来说下这三个时间的概念:
UT(Universal Time 世界时)是基于天体观察计算出来的时间。UT本身是一个广泛的概念,其下包括UT0,UT1,UT2等。其中UT0是完全按照天体运行计算出来的时间,UT1是在UT0的基础上做了一些调整,UT2是在UT0和UT1的基础上又进行了一些调整。由于天体运行的一些不确定性(比如地球的自转并非匀速的,而是以复杂的方式进行着加速和减速),所以UT时间并不是均匀流过的。
UTC(Universal Time Coordinate 协调世界时)是基于原子时钟的时间。什么是原子时钟?个人认为就是一个很小的,长度固定的,不可再分的时间段。所以UTC的时间是均匀的。为了能够尽量减小和UT时间的误差,UTC引入了闰秒(在某些年份的最后一分钟是61秒),以确保UTC是UT1之间的误差在0.9秒之内。
GMT(Greenwish Mean Time 格林威治平时),这是UTC的民间名称。GMT=UTC。
Java的Date类打算反映UTC,但是却无法做到如此准确。这取决于本地硬件设备环境。因为目前绝大部分的硬件设备都假定 1年=365(+1?) * 24 * 3600秒。