java中的时区处理

关于时差和时区
在地球不同位置的两个地点,其日出、日落时间一定会不同:东边会比西边更早看到日出;这种差异就是所谓的“时差”,原因为地球为球形以及地球自转造成。理论上,每隔经度15°划出一个时区,全球刚好可分成二十四个时区,每个时区时差一小时,在各时区之內的任一个地点都是相同时间。但此作法会导致正好经过分界线的同一国家或同一行政区时间混乱,因此实际的时区划分会依据国界与行政区界而调整;又有部份国家、地区认为一小时的时差太大,而改成加减半小时或十五分钟。

格林威治标准时间GMT
GMT 是 Greenwich Mean Time的缩写,即格林威治时间,也称格林尼治时间,指位于英国伦敦郊区的皇家格林尼治天文台的标准时间。

理论上来说,格林尼治时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。另外地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间已经不再被作为标准时间使用。现在的标准时间──协调世界时(UTC)──由原子钟提供。

世界协调时间UTC
UTC指的是Coordinated Universal Time- 世界协调时间(又称世界标准时间、世界统一时间),是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以“秒”为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以“世界标准时间”的角度来说,UTC比GMT来得更加精准。其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。

夏日节约时间DST
所谓“夏日节约时间”Daylight Saving Time(简称D.S.T.),是指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用,在英国则称为夏令时间(Summer Time)。这个构想于1784年由美国班杰明·富兰克林提出来,1915年德国成为第一个正式实施夏令日光节约时间的国家,以削减灯光照明和耗电开支。自此以后,全球以欧洲和北美为主的约70个国家都引用这个做法。目前被划分成两个时区的印度也正在商讨是否全国该统一实行夏令日光节约时间。欧洲手机上也有很多GSM系统的基地台,除了会传送当地时间外也包括夏令日光节约时间,做为手机的时间标准,使用者可以自行决定要开启或关闭。

SCT
CST比较特别,它同时代表了下面4个时区:

CST Central Standard Time (USA) UT-6:00

CST Central Standard Time (Australia) UT+9:30

CST China Standard Time UT+8:00

CST Cuba Standard Time UT-4:00

在java中可以通过如下方法将设置时区:


public String getGMT(Date dateCST) {
DateFormat df = new SimpleDateFormat(“EEE, d-MMM-yyyy HH:mm:ss z”, Locale.ENGLISH);
df.setTimeZone(TimeZone.getTimeZone(“GMT”)); // modify Time Zone.
return(df.format(dateCST));
}

参考:时间科普

此条目发表在java/j2ee分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据