代码
public String testDate(){
TimeZone.setDefault(TimeZone.getTimeZone("US/Eastern"));
Calendar fromDate = Calendar.getInstance();
Date date= new Date();
System.out.println(fromDate);
System.out.println(date);
}
在调试下面的日历变量时,我的日历变量显示一个日期时间值为2013-12-09T00:00:00.000Z
和时间值为1386649779590
Calendar cal = Calendar.getInstance();
我看到的完整日历详细信息,打印对象时
System.out.println(cal);
控制台
java.util.GregorianCalendar[time=1386649779590,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="US/Eastern",offset=-18000000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=US/Eastern,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2013,MONTH=11,WEEK_OF_YEAR=50,WEEK_OF_MONTH=2,DAY_OF_MONTH=9,DAY_OF_YEAR=343,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=29,SECOND=39,MILLISECOND=590,ZONE_OFFSET=-18000000,DST_OFFSET=0]
当我的java.util.date变量显示日期为Mon Dec 09 07:37:50 EST 2013
时,在调试日期变量时
Date date= new Date();
我的默认时区
是在程序启动时设置的,为 EST
TimeZone.setDefault(TimeZone.getTimeZone("US/Eastern"));
我现在从时区 IST
工作。
我的问题是:
为什么 Calendar
的 cal
和 Date()
的 date
不同?
Date
实例没有时区;toString
只是使用当前默认时区。)而且你仍然没有说出到底是什么产生了“你发现的值” - 是的,你在调试,但这并没有告诉我们太多信息。一个简短但完整的程序会更加有信息量。 - Jon SkeettoString()
或其他什么。最好提供一个SSCCE。 - dcsohl