Dil*_*eep 6 java calendar date
码
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);
}
Run Code Online (Sandbox Code Playgroud)
我的日历变量在调试下面的日历变量时显示cdate值2013-12-09T00:00:00.000Z和时间值1386649779590.
Calendar cal = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
我在打印对象时看到的完整日历详细信息
System.out.println(cal);
Run Code Online (Sandbox Code Playgroud)
安慰
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]
Run Code Online (Sandbox Code Playgroud)
而我的java.util.date变量显示日期为Mon Dec 09 07:37:50 EST 2013,同时调试日期变量
Date date= new Date();
Run Code Online (Sandbox Code Playgroud)
我设置的默认值timezone是在程序启动时指定的EST
TimeZone.setDefault(TimeZone.getTimeZone("US/Eastern"));
Run Code Online (Sandbox Code Playgroud)
而我正在从timezone IST工作.
我的问题是
为什么cal中Calendar和date的Date()不同?
dbw*_*dbw 13
根据Oracle文档,明确提到,
public static Calendar getInstance()
使用默认时区和语言环境获取日历.返回的日历基于默认时区中具有默认语言环境的当前时间.
而default time zone被得到public static TimeZone getDefault(),它是在提到TimeZone.getDefault()是
获取此主机的默认TimeZone.默认TimeZone的来源可能因实施而异.
default除非您已使用public static void setDefault(TimeZone zone)函数TimeZone明确设置,否则它将返回计算机中设置的时区.
我相信上面的解释可以回答你的两个问题,
编辑:根据您编辑的问题
为什么日历的cal和Date()的日期不同?
当你打电话System.out.println(date);,然后toString()调用函数,如果你看一下源代码日期,你会发现,它通过调用速记返回3个字母的时区displayName是3个字母的简写,你的情况缺省时区的功能EST,这是U.S. Eastern Standard Time (GMT-05:00) Indiana (East).
| 归档时间: |
|
| 查看次数: |
19952 次 |
| 最近记录: |