【发布时间】:2013-12-09 12:53:15
【问题描述】:
代码
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);
}
在调试下面的日历变量时,我的日历变量显示 cdate 值 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();
我设置的默认 timezone 是 EST 在程序启动时指定的
TimeZone.setDefault(TimeZone.getTimeZone("US/Eastern"));
我在 timezone IST 工作。
我的问题是
为什么Calendar 的cal 和Date() 的date 不同?
【问题讨论】:
-
很难理解你的问题。您可以拨打
getTimeZone轻松查看日历的时区。如果这不能为您提供足够的信息,请发布一个简短但完整的程序来演示该问题。当我们不知道您如何看待该值时,我们不知道您所说的“我的日历变量将时间显示为 [...]”是什么意思。 -
@JonSkeet 我已经发布了我检查过的结果。但我没有得到时区
-
“我已经发布了我检查过的结果”是什么意思?在哪里?你的整个问题很难理解。
-
@JonSkeet 2013-12-09T00:00:00.000Z 这是我在调试 Calendar 变量时发现的值
-
我只想说,在任何时区中,纪元 1386592669972 都不等于
2013-12-09T00:00:00.000Z。纪元 1386592669972 是2013-12-09T12:37:49.972Z。您需要准确显示您如何看待第一次约会 - 调试器或toString()或什么。 SSCCE 最好。