如何确定Android中工作日与周末的哪些天数?

时间:2015-09-08 23:32:20

标签: android locale

Qt / Qlocale有一个weekdays()方法,可以为您提供语言环境的工作日。

Android似乎只有Calendar.getFirstDayOfWeek()方法没有帮助 - en_GB和en_US分别在星期一和星期日作为星期一周的第一天,但​​两个语言环境都将星期六/星期日定义为周末。

提出了类似的问题,但它被搁置:Does Android provide an API for determining weekend days that is locale-aware?

5 个答案:

答案 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;
}