在 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/