Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java(处理环境)不会为我提供本地时间_Java_Time_Timezone_Processing_Localtime - Fatal编程技术网

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

Java(处理环境)不会为我提供本地时间,java,time,timezone,processing,localtime,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而不是GMT-7(我的时区)输出epoc时间。在玩了一段时间之

我正在尝试根据本地时区调整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而不是GMT-7(我的时区)输出epoc时间。在玩了一段时间之后,我确实让它起作用了

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

但是为什么第一个街区不起作用呢

A
Date
对象简单地将UTC时间包装为从纪元开始的毫秒。在Java中,所有时间都是这样表示的。这也使它与工作保持一致。无论何时要打印出某个内容,都要对其应用时区偏移量和DST偏移量

这就是为什么
SimpleDateFormat
类接受时区,但
Date
类上没有时区设置器

强制性:我听说datetime是一个更容易使用的API

另外,请看一下Java中的标准日期和时间库