尝试开发类似于股票日历的应用程序。我正在尝试每周查看我的应用程序。
我的当前周日期正好显示。
现在我正在尝试完成上一周和下周的计算。我在之前的计算中尝试了以下内容:
if(calender.get(Calendar.WEEK_OF_YEAR) == calender.getActualMinimum(Calendar.WEEK_OF_YEAR))
{
calender.set((calender.get(Calendar.YEAR)-1), calender.getActualMaximum(Calendar.WEEK_OF_YEAR), 1);
}
else
{
calender.set(Calendar.WEEK_OF_YEAR, calender.get(Calendar.WEEK_OF_YEAR)-1);
}
week = calender.get(Calendar.WEEK_OF_YEAR);
year = calender.get(Calendar.YEAR);
Log.e("Week","+ week"+ week);
Log.e("Year","+ Year"+ year);
这里几周的日志正常到第1周(1月1日),这是前一年我遇到问题的地方。该日志显示周为18,年为2017.我不知道为什么?
对于下周:到了12月底,它从第6周开始而不是第1周。奇怪的事情正在发生?
有没有更好的方法来获得前一周或下周?
有人可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:0)
首先,您的问题与Android无关。 Calendar是一个Java API。请修改您的问号。
你的错误在于代码的这一部分:
calender.set((calender.get(Calendar.YEAR)-1), calender.getActualMaximum(Calendar.WEEK_OF_YEAR), 1);
无论您是否在一年的第一周,如果您想获得前一周,请致电以下方法:
calender.set(Calendar.WEEK_OF_YEAR, calender.get(Calendar.WEEK_OF_YEAR) - 1);
除了将当前周设置为上一周之外,方法set()
还会计算修改后的年份和日期。
此代码:
calender.set(Calendar.DAY_OF_YEAR, 1);
System.out.println("Day: " + calender.get(Calendar.DAY_OF_YEAR));
System.out.println("Week: " + calender.get(Calendar.WEEK_OF_YEAR));
System.out.println("Year: " + calender.get(Calendar.YEAR));
calender.set(Calendar.WEEK_OF_YEAR, calender.get(Calendar.WEEK_OF_YEAR) - 1);
System.out.println("Day: " + calender.get(Calendar.DAY_OF_YEAR));
System.out.println("Week: " + calender.get(Calendar.WEEK_OF_YEAR));
System.out.println("Year: " + calender.get(Calendar.YEAR));
生成此输出:
Day: 1
Week: 1
Year: 2015
Day: 359
Week: 52
Year: 2014
答案 1 :(得分:0)
我解决了这个问题:认为这可能对那些努力获得上周和下周数字的人有用。
获得上一周
if(calender.get(Calendar.WEEK_OF_YEAR) == 2)
{
calender.set(Calendar.WEEK_OF_YEAR, calender.get(Calendar.WEEK_OF_YEAR) - 1);
calender.set(Calendar.DAY_OF_YEAR, 1);
}
else
{
calender.set(Calendar.WEEK_OF_YEAR, calender.get(Calendar.WEEK_OF_YEAR) - 1);
}
week = calender.get(Calendar.WEEK_OF_YEAR);
year = calender.get(Calendar.YEAR);
fetchData(week, year);
break;
下周工作:
if(calender.get(Calendar.WEEK_OF_YEAR) == calender.getActualMaximum(Calendar.WEEK_OF_YEAR))
{
calender.set(Calendar.YEAR, calender.get(Calendar.YEAR) + 1);
calender.set(Calendar.WEEK_OF_YEAR, 1);
}
else
{
calender.set(Calendar.WEEK_OF_YEAR, calender.get(Calendar.WEEK_OF_YEAR) + 1);
}
week = calender.get(Calendar.WEEK_OF_YEAR);
year = calender.get(Calendar.YEAR);
fetchData(week, year);
PS: fetchData是一种方法,如果你给它一周和一年,它会给出那一周的日期。
希望它对其他人有用。