例如:
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 周。
关于java - 为什么 2010 年 12 月 31 日返回 1 作为一年中的一周?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608470/