我正在用Java编写程序,我需要确定某个日期是否是周末。但是,我需要考虑到,在不同的国家,周末的不同日子会有不同的日子。在以色列,星期五和星期六是一些伊斯兰国家的周四和周五。欲了解更多详情,你可以检查出this Wikipedia article。有没有简单的方法来做到这一点?如何检查某个日期是否考虑到Java中的当前语言环境是否是周末?
4
A
回答
0
你可以得到一周的某一天(见:How to determine day of week by passing specific date?)
然后,只需检查,如果那天是基于选择无论哪个国家在一个周末。
0
Java Calendar
类具有此功能,getFirstDayOfWeek
method。从Calendar
文档引用:一周的第一天,在第一周的最少天数(从1到7):
日历使用两个参数定义了一个特定于区域的7天周。这些数字是在构建日历时从地区资源数据中获取的。它们也可以通过设置其值的方法明确指定。
所以有了这些信息,你就可以计算出一天是否是周末的一天。
final Calendar cal = Calendar.getInstance(new Locale("he_IL"));
System.out.println("Sunday is the first day of the week in he_IL? " + (Calendar.SUNDAY == cal.getFirstDayOfWeek()));
输出:
Sunday is the first day of the week in he_IL? true
+6
根据这一点,它是en_US的星期天。这里有个大缺陷:'getFirstDayOfWeek'返回通常是打印日历上的第一天,而不是工作周的第一天。 http://ideone.com/zX4Pcc – zapl
0
图书馆,Jollyday可以计算假期有用,http://jollyday.sourceforge.net/index.html
2
根据您发送我已经解决了它为自己的维基以下代码:
private static final List<String> sunWeekendDaysCountries = Arrays.asList(new String[]{"GQ", "IN", "TH", "UG"});
private static final List<String> fryWeekendDaysCountries = Arrays.asList(new String[]{"DJ", "IR"});
private static final List<String> frySunWeekendDaysCountries = Arrays.asList(new String[]{"BN"});
private static final List<String> thuFryWeekendDaysCountries = Arrays.asList(new String[]{"AF"});
private static final List<String> frySatWeekendDaysCountries = Arrays.asList(new String[]{"AE", "DZ", "BH", "BD", "EG", "IQ", "IL", "JO", "KW", "LY", "MV", "MR", "OM", "PS", "QA", "SA", "SD", "SY", "YE"});
public static int[] getWeekendDays(Locale locale) {
if (thuFryWeekendDaysCountries.contains(locale.getCountry())) {
return new int[]{Calendar.THURSDAY, Calendar.FRIDAY};
}
else if (frySunWeekendDaysCountries.contains(locale.getCountry())) {
return new int[]{Calendar.FRIDAY, Calendar.SUNDAY};
}
else if (fryWeekendDaysCountries.contains(locale.getCountry())) {
return new int[]{Calendar.FRIDAY};
}
else if (sunWeekendDaysCountries.contains(locale.getCountry())) {
return new int[]{Calendar.SUNDAY};
}
else if (frySatWeekendDaysCountries.contains(locale.getCountry())) {
return new int[]{Calendar.FRIDAY, Calendar.SATURDAY};
}
else {
return new int[]{Calendar.SATURDAY, Calendar.SUNDAY};
}
}
相关问题
- 1. 检查日期是否为周末PHP
- 2. 日期是否有语言环境?
- 3. 检查月份中的日期是否是周末
- 4. php检查输入的日期是否是周末
- 5. 如何检查日期是否在XSLT文件的周末
- 6. 如何检查当前循环中是否存在某个值?
- 7. 如何确定日期是否是在javascript中的周末
- 8. MySQL检查日期时间列是否在周末期
- 9. 检查日期是否在某个日期之前PHP laravel
- 10. 正则表达式是否可能知道某个日期是否为周末?
- 11. jquery如何检查日期是否小于当前日期
- 12. 如何检查当前日期是否大于结束日期?
- 13. 如何检查移动日期是否为当前日期
- 14. 检查日期是周日还是周末?
- 15. 确定Oracle日期是否在周末?
- 16. 确定日期是周日/周末java
- 17. 检查一个字符串是否是当前日期
- 18. 如何确定日期是否是周末(不使用lubridate)
- 19. 查找当前日期是否是同一个日期
- 20. 检查是否在bash中启用了特定语言环境
- 21. 如何查看日期是否在周末?
- 22. 如何检查今天是否是Java日历的星期日
- 23. 的Java:检查是否当前日期是在特定的日子
- 24. 检查提供的语言环境是否存在
- 25. Java检查日期是否是下一个星期日
- 26. 检查当前日期是否在假期日期范围内
- 27. 检查当前日期是否已到期
- 28. 如何检查日期是否在某个星期或季度
- 29. 检查Java中是否存在日期
- 30. 检查当前日期是否大于上一个星期一
在我看来,这似乎不是我信息存储在一个语言环境中。 –
你应该真的考虑转换到JodaTime而不是使用Java的日期/时间的东西。 (除非你使用的是Java 8,并且不需要支持以前的Java框架--JodaTime或多或少地内置于Java 8中,名称不同。) – RenniePet
@RenniePet是[Joda-Time](http ://www.joda.org/joda-time/)是一个很棒的图书馆。但我不明白它对这个问题有什么帮助。据我所知,Joda-Time不包括周末与周末相关的任何区域信息。 Joda-Time确实支持[ISO 8601](http://en.wikipedia.org/wiki/ISO_8601)标准周,但不支持其他文化周。如果您有一些可以分享的见解或示例代码,请发布答案。 –