Java (Processing Environment)不会给我提供当地时间



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

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

但是它仍然输出基于GMT的epoc时间,而不是GMT-7(我的时区)。玩了一段时间后,我确实得到了这个工作…

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

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

一个Date对象简单地包装了从epoch开始的以毫秒为单位的UTC时间。这就是Java中所有时间的"底层"表示方式。这也使它在工作中保持一致。当你想打印一些东西时,应用TimeZone偏移量和DST偏移量。

这就是为什么SimpleDateFormat类接受TimeZone,而Date类上没有TimeZone setter的原因。

必选:我听说Joda Time是一个更容易使用的datetime API。

还有,看看这篇关于Java标准日期和时间库的文章

相关内容

  • 没有找到相关文章

最新更新