如何使 GWT DatePicker 使用星期一作为一周的第一天?

Posted

技术标签:

【中文标题】如何使 GWT DatePicker 使用星期一作为一周的第一天?【英文标题】:How to make GWT DatePicker to use Monday as the first day of the week? 【发布时间】:2011-03-31 07:24:54 【问题描述】:

差不多,就是标题所说的。我需要让 GWT DatePicker 组件使用星期一作为一周的第一天。目前日期标签是S M T W T F S,我希望它是M T W T F S S。有什么方法可以实现吗?

【问题讨论】:

我认为这个 DatePicker 正在使用您的语言环境来自动为您自定义 DatePicker。 code.google.com/p/gwt-datepicker/wiki/HowToUse 【参考方案1】:

如果自动区域设置检测不符合您的需求(并且可能在 com.google.gwt.i18n.client.constants.DateTimeConstantsImpl_xy.properties 中编辑 firstDayOfTheWeek 也不会),唯一的选择是修改 DatePicker 的实现:

扩展 DatePicker,编写一个新的构造函数,用你自己的视图和模型调用受保护的 DatePicker(MonthSelector monthSelector, CalendarView view, CalendarModel model) 构造函数。

CalendarModel 可以扩展,因此您必须覆盖 getCurrentFirstDayOfFirstWeek

DefaultCalendarView 是最终的,因此您必须将其复制到新类并修改其 setup 方法。

它相当混乱,这是 GWT 的小缺点 - 它大量使用单例而不是依赖注入...

【讨论】:

嗯...我会接受这个作为答案,因为我也在想同样的事情。我要试试看。【参考方案2】:

不需要继承 DatePicker。请点击下面的 url 阅读 google gwt 文档。 http://code.google.com/webtoolkit/doc/latest/DevGuideI18nLocale.html#LocaleSpecifying

【讨论】:

【参考方案3】:

如果您查看DefaultCalendarView 的源代码(可以在DatePicker 的受保护构造函数中提供),它使用CalendarUtil 的getStartingDayOfWeek 来设置默认开始日期。 CalendarUtilDateTimeConstants 获取开始日期。因此,正如 ju 所说,这取决于您的语言环境。

问题是,如何覆盖默认的语言环境值。老实说,我不知道该怎么做,甚至不知道这是否可能。这显然是最简单的解决方案。

但是,如果这不可能,您可以创建一个扩展 DatePicker 的类。然后创建另一个扩展DefaultCalendarView 并覆盖setup 方法的类。复制相同的方法源,但将开始日期更改为星期一,而不是使用CalendarUtil 中的开始日期。然后使用您的自定义DefaultCalendarView 创建您的自定义DatePicker。这是一个 hack,但它应该可以工作。

【讨论】:

指定不同的语言环境很容易(在GWT docs 中) - 但随后它将适用于页面中的每个 GWT 小部件......顺便说一句:你真的基本上复制了我的答案吗?! 哈哈哈,我在没有答案的时候开始写我的,但我没能马上写完。当我完成并提交它时,你的就在那里......出于某种原因,*** 没有像以前那样警告我。对不起:P 不用担心 - 很高兴找到想法相似的人 :-)

以上是关于如何使 GWT DatePicker 使用星期一作为一周的第一天?的主要内容,如果未能解决你的问题,请参考以下文章

GWT / Java Date api中的星期几

将 DatePicker 中的第一天设置为星期一

phpmyadmin datepicker 开始星期几

如何创建仅启用星期日的 DatePicker?

为任意DatePicker创建自定义年表

在 datepicker 中选择特定日期时,如何自动填充特定的星期几?