1

我想在以下 java 代码中将秒从 DEC 31ST 1969 7 PM 转换为日期/时间。

package sampProp;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.TimeZone;


public class sample 
{    
    public static void main(String args[])  
    {

     //Here 1373605580 is the number os secs from DEC 31ST 1969 7 PM
     long millisecs = (long)(1373605580) *1000;

     DateFormat df = new SimpleDateFormat("MM/dd/yyyy_HH:mm:ss a");

     df.setTimeZone(TimeZone.getTimeZone("EST"));

     Date d1 = new Date(millisecs);

     String formattedDate = df.format(d1); 

     System.out.println("Formatted date is "+formattedDate);

    } 
}

我在 AIX 服务器上运行代码。

我的开发服务器给出了07/12/2013_00:06:20正确的值,但我的生产服务器给出了07/12/2013_01:06:20不正确的值。

这怎么可能。我该如何纠正这一点。

我的开发服务器的 java-version 输出是:

java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pap64dev-20071008 (SR6))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423-20071007 (JIT enabled)
J9VM - 20071004_14218_BHdSMr
JIT  - 20070820_1846ifx1_r8
GC   - 200708_10)
JCL  - 20071008

我的生产服务器的 java-version 输出是:

java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pap64dev-20080315 (SR7))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423-20080315 (JIT enabled)
J9VM - 20080314_17962_BHdSMr
JIT  - 20080130_0718ifx2_r8
GC   - 200802_08)
JCL  - 20080314
4

2 回答 2

1

是因为您的时区未在您的服务器上正确设置吗?

检查这个问题和答案:java不正确的时区

检查开发服务器和生产服务器中 JVM 的时区。

编辑

正如许多人所说:它不应该来自那个,它仍然很奇怪,并且您的两个服务器之间的配置看起来非常相似(仍然:JVM 不一样)。应该有区别,所以检查 JVM 参数和系统变量并查看时区对我来说似乎是第一次。

重新编辑:

正如大卫所说:这是一个关于节省时间的错误:

这是链接: http: //www.coderanch.com/t/458357/java/java/AIX-Timezone-Java-showing-hour

以及来自 IBM 的链接:http ://www-01.ibm.com/support/docview.wss?uid=swg21250503

我引用:

2006 年,Olson 数据库中 EST 时区标识符的含义发生了变化。从历史上看,EST 参考美国东部标准时间并针对夏令时进行了调整。更改后,EST 指的是东部标准时间,没有针对夏令时进行调整。还引入了一个新的标识符 EST5EDT,它与原始 EST 标识符具有相同的含义。因此,EST5EDT 指的是美国东部标准时间,并对夏令时进行调整。

避免这些问题的最佳方法是使用像 America/New_York 这样的长时区标识符。

如果您无法更改应用程序以使用长时区标识符,则可以设置系统属性 ibm.dst.compatibility 或 sun.timezone.ids.oldmapping 以更改 EST 或 MST 的解释。

于 2013-11-04T17:44:32.670 回答
0
于 2018-12-27T00:41:19.463 回答