例如:
Calendar c = Calendar.getInstance();
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
c.setTime( sdf.parse("31/12/2010"));
out.println( c.get( Calendar.WEEK_OF_YEAR ) );
打印 1
Joda时间也是如此。
:)
例如:
Calendar c = Calendar.getInstance();
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
c.setTime( sdf.parse("31/12/2010"));
out.println( c.get( Calendar.WEEK_OF_YEAR ) );
打印 1
Joda时间也是如此。
:)
一年中的一周的定义是Locale
依赖的。
在其他帖子中讨论了它在美国的定义。例如在德国 ( DIN 1355-1 / ISO 8601 ):一年中的第一周* 是新年的第一周有 4 天或更多天。
*一周的第一天是星期一,一周的最后一天是星期日
Java 的Calendar
注意语言环境。例如:
public static void main(String[] args) throws ParseException {
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date lastDec2010 = sdf.parse("31/12/2010");
Calendar calUs = Calendar.getInstance(Locale.US);
calUs.setTime(lastDec2010);
Calendar calDe = Calendar.getInstance(Locale.GERMAN);
calDe.setTime(lastDec2010);
System.out.println( "us: " + calUs.get( Calendar.WEEK_OF_YEAR ) );
System.out.println( "de: " + calDe.get( Calendar.WEEK_OF_YEAR ) );
}
印刷:
us: 1
de: 52
已添加 对于美国(我可以认为墨西哥也是如此),一年中的第 1 周是 1. 一月所属的那一周。-- 所以如果 1. Januar 是星期六,那么之前的星期五(12 月 31 日)属于同一周,在这种情况下,这一天属于 2011 年的第 1 周。
为 WEEK_OF_YEAR 字段计算的值范围为 1 到 53。一年的第 1 周是从 getFirstDayOfWeek() 开始的最早的 7 天时间段,其中至少包含该年的 getMinimalDaysInFirstWeek() 天数。因此,它取决于 getMinimalDaysInFirstWeek()、getFirstDayOfWeek() 和 1 月 1 日的星期几的值。一年的第 1 周和下一年的第 1 周之间的周按从 2 到 52 或 53 的顺序编号(如需要)。
要确定该周是 2010 年的最后一周还是 2011 年的第一周,Java 使用getMinimalDaysInFirstWeek
javadoc。如果该方法返回 7,那么一周中所有天都在同一年的第一周是第一周,如果它返回 1,那么带有下一年任何天的第一周是下一年的第一周。
在这种情况下,2011 年 1 月的第一天是星期六,所以它被认为是 2011 年的第一周,只要您希望有一天的一周已经被视为明年的第一周,如果您不这样做然后做:
Calendar c = Calendar.getInstance();
c.setMinimalDaysInFirstWeek(7);//anything more than 1 will work in this year
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
c.setTime( sdf.parse("31/12/2010"));
System.out.println( c.get( Calendar.WEEK_OF_YEAR ) );
返回:
52
IIRC,日期为 1 月 1 日的第一周是第 1 周。
这就是为什么在 2010 年 12 月 31 日返回第 1 周。 在2011
年 12 月
31 日试试,你会得到 52
这是因为一周的开始取决于当地情况。
在美国,第 1 周从 1 月 1 日之前的星期日开始。在 2010 年,这是 12 月 26 日。这就是为什么 12 月 31 日仍然是第 1 周。
在欧洲,第 1 周从 1 月 1 日之前的星期一开始。在 2010 年,这是 12 月 27 日。这就是为什么在欧洲,12 月 31 日仍然是第 1 周。