的数据
如何在Vaadin日历小部件DateField和InlineDateField中更改一周的第一天?例如,在上面的屏幕截图中,一周从周日开始,但我想要周一。
我知道这些小部件尊重Locale,并相应地进行调整。例如,分配Locale.FRANCE会将星期一作为一周的第一天(并将法语用于月份和日期的名称),而Locale.CANADA_FRENCH会将星期日作为一周的第一天。
但是有没有什么方法可以专门设置星期一呢?在我的例子中,我希望用户选择一个Locale,但是日历必须将星期一作为星期一才能显示标准的ISO 8601 weeks。
4条答案
按热度按时间ua4mk5z41#
你可以操作UI的locale数据的该高速缓存。例如:
字符串
注意,列表
localeData
将随着新的区域而改变,你让vaadin在运行时知道.你可能想确保用你已知的区域预先填充这个列表或者找到对改变做出React的方法.piztneat2#
如果你的UI语言环境必须是一个,但你希望日期字段中的日期表示是另一个,你可以在日期字段中使用dateField.setLocale(Locale.FRANCE);覆盖语言环境。据我所知,没有专门设置第一天的选项。
uidvcgyl3#
解决方法:指定另一个语言相同的Locale
正如在answer by Jens Jansson中提到的,我们可以设置特定小部件的区域设置来覆盖使用UI的区域设置的默认值。
我把这个功能当作一种技巧,一种解决这个问题的方法。
假设您希望使用
Locale.CANADA
作为应用的区域设置。但该区域设置使用星期日作为一周的第一天,而我们希望使用星期一。也许我们希望在InlineDateField中使用一年中的星期功能。我们可以为该InlineDateField分配另一个使用星期一的英语区域设置,例如Locale.UK
,其中星期一是一周的第一天。对于法语版本,如果我们通常使用Locale.CANADA_FRENCH
,我们可以将Locale.FRANCE
分配给小部件,其中星期一而不是星期天首先出现。不太理想,但我一直在成功地使用这种方法。
rwqw0loc4#
在Vaadin23有一个官方的方式..
字符串