【问题标题】:Formatting a long timestamp into a Date with JSTL使用 JSTL 将长时间戳格式化为日期
【发布时间】:2010-09-09 16:23:22
【问题描述】:

我正在从数据库中提取一个长时间戳,但只想使用标签将其显示为日期,而在 JSP 中没有嵌入 Java。

我创建了自己的标签来执行此操作,因为我无法让 parseDate 和 formatDate 标记工作,但这并不是说它们不起作用。

有什么建议吗?

谢谢。

【问题讨论】:

    标签: java jsp jstl


    【解决方案1】:

    您可以避免对 Servlet 进行任何更改,方法是在 JSP 中创建一个日期对象,使用 jsp:useBeanjsp:setProperty 标记将新创建的日期对象的时间设置为时间戳的时间。例如:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    <jsp:useBean id="dateValue" class="java.util.Date"/>
    <jsp:setProperty name="dateValue" property="time" value="${timestampValue}"/>
    <fmt:formatDate value="${dateValue}" pattern="MM/dd/yyyy HH:mm"/>
    

    【讨论】:

    • 如果您循环遍历一个列表并且您需要对每个项目的属性执行此操作,这很好。
    • 这对我不起作用。对于我传入的所有值,它只显示 12/31/1969 16:00
    【解决方案2】:

    parseDate 和 formatDate 标记有效,但它们适用于 Date 对象。 您可以调用 new java.util.Date(longvalue) 来获取日期对象,然后将其传递给标准标签。

    在 jsp 以外的地方创建你的日期对象。

    long longvalue = ...;//from database.
    java.util.Date dateValue = new java.util.Date(longvalue);
    request.setAttribute("dateValue", dateValue);
    

    把它放在请求上,然后你可以像这样在你的标签中访问它。

    <fmt:formatDate value="${dateValue}" pattern="MM/dd/yyyy HH:mm"/>
    

    【讨论】:

    • 我需要将其更改为 new java.util.Date(longvalue*1000);因为如果有人遇到同样的问题,Java 会等待几毫秒。
    猜你喜欢
    • 2020-10-23
    • 2018-06-15
    • 2011-10-10
    • 2020-02-24
    • 2021-04-14
    • 2015-08-09
    • 1970-01-01
    • 2018-03-18
    • 2016-11-26
    相关资源
    最近更新 更多