java - 如何从日历中获取 UTC 时间戳?

标签 java localization calendar timezone timestamp

在 Java 中,当我使用 Calendar.getInstance(); 时,我得到了当前时区的 Calendar 对象。但是 java.sql.Timestamp 通常以 UTC 时间存储,而不是本地时间。那么如何从 Calendar 实例中获取 UTC 时间呢?

    DateFormat df = DateFormat.getTimeInstance();
    Calendar cal = Calendar.getInstance();
    Timestamp time = new Timestamp(cal.getTimeInMillis());

    // Prints local time
    System.out.println(df.format(new Date(time.getTime())));

    // Printe local time, but I want UTT Time
    System.out.println("timestamp: " + time);

最佳答案

当您调用 Calendar.getTime() 时,这将为您提供一个没有相关时区的值 - 或者您可以将其视为 UTC - 对于 即时日历代表。因此,如果是(比如说)日历时区的上午 9 点,则可能是世界标准时间下午 5 点。

现在,当您调用toString()(无论是隐式还是显式)- 但不要让它误导您认为时区是对象本身数据的一部分。

您需要非常清楚确切您要实现的目标 - 然后您可能会发现 Joda Time让您在代码中比内置库更清楚地表达这一点。

关于java - 如何从日历中获取 UTC 时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4377279/

相关文章:

swift - 在 Swift 2 中实现时间框架的方法

java - 在 eclipse maven 中链接源文件夹时出现错误

java - JSP if 条件的不平衡括号

java - 用字符串替换字符串中的特定字符?

java - 在 Freemarker 中实现自定义 Escaper

ios - 使用 Base.lproj 的本地化 Storyboard

c++ - Qt - 自定义小数点和千位分隔符

twitter-bootstrap - 你如何本地化 Twitter Bootstrap

date - Primefaces 日历允许无效日期

android - 如何在特定日历上打开日历应用程序