V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
yufz
V2EX  ›  问与答

为什么Java中的Calendar在Java和Android下结果不一样

  •  
  •   yufz · Dec 1, 2013 · 2877 views
    This topic created in 4540 days ago, the information mentioned may be changed or developed.
    在java 环境下打运行
    Calendar c=Calendar.getInstance();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    System.out.println(c);
    System.out.println(c.get(Calendar.WEEK_OF_YEAR));

    打印结果,周数48是对的
    java.util.GregorianCalendar[time=1385876708339,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2013,MONTH=11,WEEK_OF_YEAR=48,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=335,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=45,SECOND=8,MILLISECOND=339,ZONE_OFFSET=28800000,DST_OFFSET=0]
    48

    但是同样的代码在android环境下就成了这样 周数变成了49
    java.util.GregorianCalendar[time=1385876864988,areFieldsSet=true,lenient=true,zone=Asia/Shanghai,firstDayOfWeek=2,minimalDaysInFirstWeek=1,ERA=1,YEAR=2013,MONTH=11,WEEK_OF_YEAR=49,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=335,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=47,SECOND=44,MILLISECOND=988,ZONE_OFFSET=28800000,DST_OFFSET=0]
    49

    不知道是什么原因,求解释
    2 replies    1970-01-01 08:00:00 +08:00
    yufz
        2
    yufz  
    OP
       Dec 2, 2013
    @xell 这个情况我也碰到过,set之后需要get一次日期时间什么的才会更新

    但是这次的情况不知何原因了

    等有时间得自习看看源码了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6095 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 06:18 · PVG 14:18 · LAX 23:18 · JFK 02:18
    ♥ Do have faith in what you're doing.