gpt4 book ai didi

Java日期时间戳转换问题

转载 作者:行者123 更新时间:2023-11-30 06:52:39 25 4
gpt4 key购买 nike

我正在用 Java 进行简单的字符串到日期的转换,只有一件事我必须注意转换应该在格林威治标准时间。我能够在格林威治标准时间转换我的字符串。但是当我尝试将该日期转换为时间戳时,我得到了不同的值(似乎值是基于我本地的时区)。

    public static void timeFun(String str) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
String dateInString = "2015-07-10T09:54:31.000-04:00";
Date date = formatter.parse(dateInString);

SimpleDateFormat sdfAmerica = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
TimeZone tz = TimeZone.getTimeZone("GMT");
sdfAmerica.setTimeZone(tz);

String convertedDate = sdfAmerica.format(date); // Convert to String
// first
Date dateInGMT = sdfAmerica.parse(convertedDate);
System.out.println(convertedDate); // Output = 2015-07-10T13:54:31.000Z (Right)
Timestamp timestamp = new java.sql.Timestamp(dateInGMT.getTime());

System.out.println(timestamp); // Output = 2015-07-10 19:24:31.0 (Wrong)

}

最佳答案

Timestamp.toString()在内部使用具有默认系统时区 的日历实例。正如您在源代码中看到的那样 java.util.Date.normalize()做魔术。所以,是的……最后一个系统输出是基于您本地的时区。

关于Java日期时间戳转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38570560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com