Java(处理环境)不会向我提供本地时间

时间:2011-09-20 08:58:49

标签: java time timezone processing localtime

我正在尝试为当地时区调整epoc时间(即GMT-7,但它显示GMT)。我很确定这应该有用,但不是......

Calendar localTime = new GregorianCalendar(TimeZone.getDefault());
Date dd = localTime.getTime();
long t = dd.getTime()/1000; 
System.out.printf("%d\n",t);

但它仍然输出基于GMT的epoc时间,而不是GMT-7(我的时区)。玩了一段时间之后我确实让它上班......

Date ddd = new Date();
long t = ddd.getTime() + TimeZone.getDefault().getOffset( ddd.getTime() );
t = t/1000;

但为什么不是第一个块工作?

1 个答案:

答案 0 :(得分:0)

Date对象简单地包含自纪元以来的UTC时间(以毫秒为单位)。这就是Java中所有时间都在“引擎盖下”的表现。这也使其与之一致。无论何时想要打印出来,都要将TimeZone偏移和DST偏移应用于它。

这就是SimpleDateFormat类接受TimeZone但Date类没有TimeZone设置器的原因。

强制性:我听说Joda Time更容易使用日期时间API。

另外,请查看Java中标准日期和时间库的this post

相关问题