日期:2014-05-20  浏览次数:20961 次

Java 中 Date date = new Date(System.currentTimeMillis()); ??
工作中用到了java.util.Date这个类,现在项目又与美国那边合作,于是得考虑时差问题,

先用这个类做了实验,Date date = new Date(System.currentTimeMillis());用System.out.print("Date: "+date);输出后结果为:
Date: Fri Feb 01 10:49:44 CST 2008

这个怎么解释,我觉得应该输出Date: Fri Feb 01 10:49:44 GMT+8 2008,这个不输出的话也得是GMT或UTC呀,怎么出来这个CST(美国中部时间)呢?

------解决方案--------------------
在很多unix下用date命令都能看到当前的时区。很多unix下中国时区都是用CST表示的。但是这个表示方法非常不合理。因为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

在unix下通过/etc/localtime这个硬连接指向的/usr/share/zoneinfo下的时区文件表示当前的真正时区。比如/etc/localtime指向了/usr/share/zoneinfo/Asia/Shanghai这个文件的时候,CST就代表了中国标准时间。
但是很多语言的时间函数库根本不做这个判断,往往就是用一个独立的时区配置文件做时区关键字和GMT的转换。因此很多系统里面CST都变成了GMT-6,也就是美国中部时间。

在处理时间的时候最好还是加上locale~~~~~~