Calendar API返回异常:欧洲地区一周首日获取结果不符预期
为什么获取欧洲用户的一周首日返回2而非1?
嘿,这事儿其实是你对Calendar类的星期数值定义和欧洲的周起始习惯理解有偏差导致的,我给你拆解清楚:
Calendar类的星期数值规则:Java的Calendar类里,星期几是用数字常量定义的——Calendar.SUNDAY对应1,Calendar.MONDAY对应2,以此类推直到Calendar.SATURDAY对应7。所以你得到的结果2,其实代表的是周一。欧洲(德国)的周起始习惯:包括德国在内的大多数欧洲国家,一周的首日是周一,而不是咱们常以为的周日。你的代码里指定了德语Locale(
Locale.forLanguageTag("de"))和柏林时区,Calendar会遵循当地的日历习惯返回周一作为首日,也就是数值2,这完全是符合预期的正确结果。
你可以加几行代码验证一下这个对应关系:
System.out.println(Calendar.SUNDAY); // 输出1 System.out.println(Calendar.MONDAY); // 输出2
简单来说,你想要的欧洲用户的一周首日(周一),就是代码返回的2,而你预期的1其实是周日,这和欧洲的周起始习惯不匹配哦~
内容的提问来源于stack exchange,提问作者Joker
相关产品推荐
相关产品推荐

