为什么这两个调试行会打印不同的小时数?
TimeZone tz = TimeZone.getTimeZone("GMT-5");
Calendar cal = Calendar.getInstance(tz);
DateTime dt = new DateTime(cal);
System.out.println("1 ====> " + dt.toString());
System.out.println("2 ====> " + cal.getTime());
第二行显示当前时间 第1行显示适当时区的时间。
答案 0 :(得分:5)
getTime()
中的方法Calendar
会返回Date
个对象。 Date
对象没有时区。它仅表示自1970年1月1日午夜以来UTC时区的时间(以毫秒为单位)。打印时,它使用默认时区,除非您使用通过时区设置的DateFormat
。
Joda-Time' s DateTime
是一个包含时区的对象。从Calendar
对象创建时,它会占用该日历的时区。
因此,当您从Date
创建Calendar
时,您将丢失时区信息。当您从DateTime
创建Calendar
时,您可以保留时区信息。