Java日期时间戳转换问题

标签 java

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

    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/

相关文章:

java - 错误 : 'SDL init failure, reason is: No available video device' when launching AVD

java - 从应用程序引擎数据存储中选择随机记录(java)

java - 组件注释无法正常工作

java - E/AndroidRuntime : FATAL EXCEPTION: main at dalvik. system.NativeStart.main(Native Method) 崩溃

java - 保存其元素可以稍后在利益相关者之间分配的元素的最佳数据结构?

java - 通过过滤器以使用 JAVA 中的 ksoap2 库从 magento 检索特定的客户列表集

java - 如何停止位置自动更新

java - Spring Boot 中使用 ExecutorService 时的 "Out Of Memory"和 "GC over limit exceeded"

c# - 未经检查的异常(例如 C#)与 Java 类异常有何不同?

java - JMeter - 在变量/属性中存储/更新 HashMap 对象