【问题标题】:Is it possible to use JSTL to display a date in the client's timezone?是否可以使用 JSTL 在客户端的时区显示日期?
【发布时间】:2009-05-14 17:40:04
【问题描述】:

在 Javascript 中,我有这个函数可以在页面标题上显示当前日期:

<SCRIPT language="Javascript">
    var today = new Date();
    document.write(today.toLocaleDateString());
</SCRIPT>

我想通过 JSTL 做到这一点,但我不确定这是否可能。到目前为止,我有这段代码:

<jsp:useBean id="date" class="java.util.Date" />
<fmt:formatDate value="${date}" type="date" pattern="EEEE, MMMM dd, yyyy"/>

因为现在正在服务器上创建日期,它可能不代表客户端的日期。我相信我可以设置formatDate函数的timeZone属性,但是我不确定如何抓取客户端的时区。有人可以提供建议吗?

谢谢!

【问题讨论】:

    标签: java javascript date jstl


    【解决方案1】:

    服务器拥有的所有信息都在 HTTP 请求中,其中不包含任何有关时间或时区的信息。

    所以你有两个选择:

    • 使用 cookie,您可以存储时区,然后在服务器端检索它。这里的问题是您必须等待第二个请求才能使用时区值。

    • 使用 AJAX,通过 javascript 和 XMLHttpRequest 对象,您可以将 'new Date().getTimezoneOffset()' 值推送到服务器,将其存储在会话变量中

    如果您只想显示时区,可能任何选项都太多了

    【讨论】:

    • 这当然是一个创意,但比我目前拥有的 SCRIPT 更复杂......
    • 是的,如果知道时区至关重要,我会发布这个答案。服务器拥有的所有信息都在 HTTP 请求中,它不包含任何有关时间或时区的信息,所以我想如果不使用 AJAX 或 cookie 就不可能知道它
    【解决方案2】:

    在不向用户询问某些信息的情况下执行此操作的唯一方法是使用 javascript 格式化日期。不完全是最漂亮的解决方案,我可能会添加

    <script ...>document.write(<javascript to format the date>)</script>
    

    或者,您可以考虑以格式化日期显示时区。这样,用户至少知道您使用的是哪个时区。

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多