如何使用特定的TimeZone创建日历?

kos*_*ych 1 java calendar

我正在创建一个Calendar对象:

Calendar calendar = new GregorianCalendar(2014, 0, 1);
Run Code Online (Sandbox Code Playgroud)

calendar.getTime()返回Wed Jan 01 00:00:00 BRT 2014

那是2014-01-01T00:00:00.000-0300

如何使用UTC TimeZone创建具有特定日期的日历?

当我尝试做的时候 calendar.setTimeZone(TimeZone.getTimeZone("UTC"));

calendar.getTime() 返回相同.

Jon*_*eet 5

只需将"指定日期,指定时区"的顺序颠倒为"指定时区,指定日期":

Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
calendar.set(2014, 0, 1, 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
Run Code Online (Sandbox Code Playgroud)

我还建议完全避免Calendar/ DateAPI - java.time用于Java 8,而Joda Time用于旧版本的Java.

  • @user1491537:请定义“不工作”。你看到了什么,你期待什么?(请记住,如果您使用“Date.toString()”,它将*始终*显示您的默认时区。这只是“toString()”的一个产物;“Date”没有特定的时区时区。) (2认同)