【问题标题】:DatePicker Tag default value in specific timezone特定时区中的 DatePicker Tag 默认值
【发布时间】:2015-05-25 05:44:48
【问题描述】:

我的 JVM 在 US/Pacific 时区运行,但客户端从印度访问应用程序;

第一次将 Struts jQuery datepicker 标记加载到浏览器中,并按照 JVM 时区的默认时间值。

我希望它位于客户时区。

无论如何都可以在日期选择器中完成吗?

<sj:datepicker theme="simple" 
                name="taskDate" 
               value="today"
          timepicker="true" 
    timepickerFormat="hh:mm:ss"
     buttonImageOnly="true" 
               style="width: 70px;"
               label="Task Date" 
                 key="taskDate" 
       displayFormat="ddMyy"  />

我尝试过使用 Joda Time,但它似乎与 datepicker 中的值不兼容,当我使用它时会加载空白值。

【问题讨论】:

  • 那么,您尝试使用 Joda Time 来放置 datepicker 时区?
  • 是的@RomanC 我试过这样做。像value="%{new DateTime().withZone(DateTimeZone.forOffsetHoursMinutes(5, 30)).toString()}" 这样的东西,但它仍然不起作用。它在加载时不显示任何默认值。
  • 当然不行,因为是服务器时间。
  • 不应该打印它拥有的字符串值吗?
  • 这取决于在 jquery 中使用的格式。

标签: struts2 timezone struts2-jquery struts2-jquery-plugin


【解决方案1】:

日期选择器不应该知道时区,只需使用您给它的时间值。除非您当然在您提供的时间规范中包含时区偏移量。 toString() 默认会包含一个时区,所以这不起作用。

但这应该:

<sj:datepicker theme="simple" 
                name="taskDate" 
               value="2015-05-26 11:00"
          timepicker="true" 
    timepickerFormat="hh:mm:ss"
     buttonImageOnly="true" 
               style="width: 70px;"
               label="Task Date" 
                 key="taskDate" 
       displayFormat="ddMyy"  />

要获得没有时区的格式,请使用以下内容:

%{new DateTime().strftime("%Y-%m-%d %H:%M")

【讨论】:

  • 这也不能解决我的问题。使用value="%{new java.util.Date()}"value="%{new DateTime()}" 就像使用value="today"。这再次显示首次加载时的 JVM 时间而不是客户端时间。如果我不明白你的回答并做一些破旧的事情,请纠正我。
  • @AshishVerma:我的回答是,您需要为小部件提供不包括时区的日期时间字符串。按照我的例子,.strftime()。您的示例将包括时区。
猜你喜欢
  • 2017-09-13
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多