2011-09-01 58 views
4

从日期返回的“年份周”数是错误的。Android中的“每周”错误

这是我的代码:

Calendar c = Calendar.getInstance(); 
c.setTime(my_date); 
int num_week = c.get(Calendar.WEEK_OF_YEAR); 

如果my_date(Date类型)为01/01/2011,我推测, “一年的周” 为1,但它返回52

我尝试用这些方法来测试,但我没有得到任何东西:

c.setFirstDayOfWeek(6); 
c.setMinimalDaysInFirstWeek(1) 

如果这很有趣,我从西班牙来的,我们每周从星期一开始。

我有做任何事情来获得正确的结果吗?

谢谢!

+0

可能的重复[为什么2010年31月31日返回1作为一年的一周?](http://stackoverflow.com/questions/4608470/why-dec-31-2010-returns-1-as-week-of-年份) –

+0

年份的第一周和最后一周取决于语言环境 - 请参阅上面的链接,了解重复的问题和解释。 –

+0

@Metro:但是将第一周的最小天数设置为1 *应该*无论如何修正它。 –

回答

3

这可能是Android/Harmony特定的。例如,这对我的作品与Java桌面:

import java.util.*; 

public class Test { 
    public static void main(String[] args) { 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(2011, 0, 1, 0, 0, 0); 
     System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // Prints 52 
     calendar.setMinimalDaysInFirstWeek(1); 
     System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // Prints 1 
    } 
} 

你能否证实完全相同的代码(模日志选项)记录52次在Android?

+0

会发生什么:'Calendar.getInstance(Locale.SPAIN)'? –

+0

@Metro:使用'新Locale(“es”)'我得到两次。用'新的语言环境(“ES”,“ES”)'我得到52和1. –

+0

有趣。我很好奇,看看这是否是Android特有的。 –