Qt / Qlocale有一个weekdays()方法,可以为您提供语言环境的工作日。
Android似乎只有Calendar.getFirstDayOfWeek()
方法没有帮助 - en_GB和en_US分别在星期一和星期日作为星期一周的第一天,但两个语言环境都将星期六/星期日定义为周末。
提出了类似的问题,但它被搁置:Does Android provide an API for determining weekend days that is locale-aware?
答案 0 :(得分:3)
您需要使用ICU4J库http://site.icu-project.org并在日历上调用getWeekData() - > http://icu-project.org/apiref/icu4j/com/ibm/icu/util/Calendar.html#getWeekData()
这个图书馆支持波斯语(Jalali)和阿拉伯语(Hijri,Hijri-civil)日历和许多其他日历。
Calendar.getInstance(new ULocale("fa_IR@calendar=persian"))
Calendar.getInstance(new ULocale("ar_IQ@calendar=islamic-civil"))
Calendar c = Calendar.getInstance(new ULocale("en_GB@calendar=gregorian"))
c.getFirstDayOfWeek()
c.getWeekData().weekendOnset // weekend start
c.getWeekData().weekendCease // weekend end
答案 1 :(得分:0)
赢了this do it:
Date d = new Date();
int dayOfWeek = d.get(Calendar.DAY_OF_WEEK);
答案 2 :(得分:0)
ICU4J的一个较小的替代方案是使用我的库Time4A。本地化周末查询的示例:
Locale yemen = new Locale("ar", "YE");
Weekmodel model = Weekmodel.of(yemen);
System.out.println(
"Weekend: " + model.getStartOfWeekend() + " - " + model.getEndOfWeekend()
); // Weekend: THURSDAY - FRIDAY
PlainDate today = SystemClock.inLocalView().today();
System.out.println(today.isWeekend(yemen));
基础数据的来源基于CLDR(与ICU4J中相同)。
答案 3 :(得分:0)
您的问题似乎已经指向other thread了。请看this answer。注意:API不会为您提供工作日,但可以让您在设备位置进行API调用时知道它是工作日/假日等。
如果该帖子完全回答了您的问题,请考虑将您的问题标记为重复。
答案 4 :(得分:-1)
一旦你有了一周中的某一天,你总是可以使用一个简单的开关或HashMap来确定它是工作日/周末吗?
SimpleDateFormat sdf = new SimpleDateFormat("EEE");
Date d = new Date();
String dayOfTheWeek = sdf.format(d);
switch(dayOfTheWeek){
case "Mon":
case "Tue":
case "Wed":
case "Thu":
case "Fri":
System.out.println("Weekday");
break;
default:
System.out.println("Weekend");
break;
}