为什么这两个调试行打印不同的小时数?
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());
第2行显示当前时间.
第1行显示适当时区的时间.
该方法getTime()
在Calendar
返回一个Date
对象.一个Date
对象不具有一个时区.它仅表示自1970年1月1日午夜以来UTC时区的时间(以毫秒为单位).打印时,它使用默认时区,除非您使用的DateFormat
是使用时区设置的时区.
Joda-Time DateTime
是一个包含时区的对象.从Calendar
对象创建时,它会占用该日历的时区.
因此,当您Date
从a 创建时Calendar
,您将丢失时区信息.当您创建a DateTime
时Calendar
,您可以保留时区信息.