static String createUTCTime()
{
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
cal.add(Calendar.SECOND, 10);
SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
f.setCalendar(cal);
return f.format(new Date());
}
基本上是我想做的事情
Calendar objectX = createUTCTime();
//2012-Nov-27 18:35:40
x.addMS(10);
//2012-Nov-27 18:35:50
如何处理 UTC 时间来操纵它们?
最佳答案
Date
只是一个时间点,它不包含任何时区信息。如果您想使用时区和日期,则需要日历
:
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
cal.add(Calendar.SECONDS, 10);
现在棘手的部分是,您不能仅仅将其转换为Date
(cal.getTime()
),因为它会丢失时区(但仍代表同一时间点)。您应该做的是创建一个配置为使用 UTC 的 SimpleDateFormat`。
另一方面,如果您只需要秒或毫秒,Date
就可以了。只需记住在正确的时区格式化即可。但是您不应该使用 Date
表示小时以及上述所有内容(假设小时为 3600000 毫秒,由于闰秒、DST 等原因,有时是错误的)
关于Java 如何创建 UTC 并向同一个 UTC 对象添加几毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13590957/