问题描述
我有一个小问题,我正在开发一个应用程序,我需要将一周的开始日期从星期一更改为另一个(星期四、星期六).这在android中可能吗,我需要计算一周的开始和知道日期的结束.(例如一周从星期四开始)
i have a little problem, i'm developing an application, and i need to change the start day of the week from monday to another one (thursday, of saturday). is this possible in android, i need to calculate the start to week and its end knowing the date. (the week starts ano thursday as example)
注意:我只是 android 开发的初学者.这是我的代码SimpleDateFormat dateformate = new SimpleDateFormat("dd/MM");
Note: i'm just a beginner in android development. here is my code SimpleDateFormat dateformate = new SimpleDateFormat("dd/MM");
// get today and clear time of day
Calendar cal = Calendar.getInstance();
// get start of this week in milliseconds
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
cal.add(Calendar.DAY_OF_YEAR, 7*(WeekIndex-1));
result = dateformate.format(cal.getTime());
cal.add(Calendar.DAY_OF_YEAR, 6 );
result=result+" - " + dateformate.format(cal.getTime());
使用上面的代码我得到了结果,但星期一是一周的明星.
using the above code im getting the result but with monday as the star of week.
注意:我无法在结果中添加日期,因为周索引会随着开始时间的变化而变化
Note: i can't add day to the result because week index changes with the changing of it's start
推荐答案
周日到周六的日历日值是 1-7.getFirstDayOfWeek
根据使用的 Locale
返回其中一个值(通常是星期一或星期日).Calendar.getInstance
使用默认的 Locale
取决于手机的设置,在您的情况下,星期一是一周的第一天.
Calendar days have values 1-7 for days Sunday-Saturday. getFirstDayOfWeek
returns one of this values (usually of Monday or Sunday) depending on used Locale
. Calendar.getInstance
uses default Locale
depening on phone's settings, which in your case has Monday as first day of the week.
一种解决方案是使用其他Locale
:
One solution would be to use other Locale
:
Calendar.getInstance(Locale.US).getFirstDayOfWeek()
将返回 1
,即 Calendar.SUNDAY
其他解决方案是使用选定的星期几值,例如
Other solution would be to use chosen day of week value like
cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
问题是,Calendar
也在 set
中使用其内部一周的第一天值.示例:
Problem is, Calendar
is using its inner first day of the week value in set
as well. Example:
Calendar mondayFirst = Calendar.getInstance(Locale.GERMANY); //Locale that has Monday as first day of week
mondayFirst.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
log(DateUtils.formatDateTime(context, mondayFirst.getTimeInMillis(), 0));
//prints "May 19" when runned on May 13
Calendar sundayFirst = Calendar.getInstance(Locale.US); //Locale that has Sunday as first day of week
sundayFirst.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
log(DateUtils.formatDateTime(context, sundayFirst.getTimeInMillis(), 0));
//prints "May 12" when runned on May 13
如果您不想使用 Locale
或者您需要其他日期作为一周的第一天,最好自己计算一周的开始时间.
If you don't want to use Locale
or you need other day as the first day of the week, it may be best to calculate start of the week on your own.
这篇关于Android 日历:更改一周的开始日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!