在我的应用程序中,用户可以从可用语言环境列表中设置她Locale
。应用程序需要确定给定日期是否为假日,并且我正在使用jollyday来执行此任务。
这是我目前的代码:
public boolean isHoliday(Calendar cal) {
HolidayManager m = HolidayManager.getInstance();
return m.isHoliday(cal);
}
我可以将其更改为以下代码以设置特定的HolidayCalendar
:
public boolean isHoliday(Calendar cal) {
HolidayManager m = HolidayManager.getInstance(HolidayCalendar.GERMANY);
return m.isHoliday(cal);
}
但是这个方法已被弃用,我需要根据用户区域设置确定我需要哪个HolidayCalendar
。我想做的是这样的事情:
public boolean isHoliday(Calendar cal, Locale loc) {
HolidayManager m = HolidayManager.getInstance(loc);
return m.isHoliday(cal);
}
我知道HolidayManager
正在使用Locale.getDefault()
并且Holiday
中也有公共方法(请参阅here)但我无法弄清楚如何执行此操作文档非常简短。
我的问题:我可以根据特定区域设置获得假期吗?我是否必须为所有语言环境编写一个主要switch
语句以匹配HolidayCalendar
?
更新我创建了a PR to the project并自行添加了功能。 PR已经合并
答案 0 :(得分:0)
在jollyday/util/ResourceUtil.java
中,我看到了locale-holiday_description对的哈希映射,但它是私有静态的,并没有在任何地方填充。
private static final Map<Locale, ResourceBundle> HOLIDAY_DESCRIPTION_CACHE = new HashMap<>();
所以,我相信,没有任何直接的方法来做你想要的。它会默认为默认的Locale。但您可以根据需要对该包进行分叉和修改,并在代码中使用它。
此外,尝试打开问题请求https://github.com/svendiedrichsen/jollyday/issues