在Javascript中转换Java公历

时间:2013-03-11 11:47:45

标签: java javascript datetime calendar gregorian-calendar

我有一个JSP页面,里面有一个java变量,名称为${entry.date},此变量的类型为Gregorian Calendar,它放在一个循环中,最后生成一个错误日志表。现在我的问题是,在我当前的页面中,通过使用javascript,我可以获得变量并将其转换为Solar Calendar对象并将其重新放入我的html中吗?

${entry.date}的输出为:

java.util.GregorianCalendar[time=1361788629000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+03:30",offset=12600000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2013,MONTH=1,WEEK_OF_YEAR=9,WEEK_OF_MONTH=5,DAY_OF_MONTH=25,DAY_OF_YEAR=56,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=7,SECOND=9,MILLISECOND=0,ZONE_OFFSET=12600000,DST_OFFSET=0]

HTML Block是:

<c:forEach var="entry" items="${errorLog}">
<tr>
    <td align="center" nowrap="nowrap">
        <mytag:format dateTime="${entry.date}"/>
    </td>
</tr>
</c:forEach>

1 个答案:

答案 0 :(得分:1)

没有必要在Javascript中执行此操作。只需使用标准的JSTL formatDate标记以及Calendar的{​​{1}}访问者:

getTime()

您可以调整<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ... <c:forEach var="entry" items="${errorLog}"> <tr> <td align="center" nowrap="nowrap"> <fmt:formatDate value="${entry.date.time}" pattern="yyyy-MM-dd hh:mm:ss a" /> </td> </tr> </c:forEach> 以满足您的需求。

编辑:实现您想要的最优雅方式是在自定义标记中实现转换/格式化,但另一种方式是:

pattern

其中<c:set var="calendar" value="${entry.date}" /> <c:set var="convertedCalendar" value='<%=SomeHelperClass.convertCalendar((Calendar)pageContext.findAttribute("calendar")) %>' /> 是一种转换SomeHelperClass.convertCalendar()的静态实用工具方法。