我正在尝试根据当地时区调整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;但是为什么第一个块不起作用呢?
发布于 2011-09-20 17:18:56
Date对象简单地包装了从纪元开始以毫秒为单位的协调时。这就是Java中“幕后”表示所有时间的方式。这也使得它在使用时保持一致。无论何时要打印输出,请对其应用TimeZone偏移和DST偏移。
这就是为什么SimpleDateFormat类接受TimeZone,而Date类上没有TimeZone设置器的原因。
必备:我听说Joda Time是一个更容易使用的datetime API。
另外,还可以看看Java语言中的标准日期和时间库中的this post。
https://stackoverflow.com/questions/7482568
复制相似问题