如何将 MySQL 时间戳转换为 Javascript 日期?

How to convert MySQL Timestamp to Javascript date?

我想在 Spring MVC 应用程序的 .jsp 页面上显示 Google 图表(折线图)。数据是从 MySQL 数据库中检索的,因此我需要将 YYYY-MM-DD HH:MM:SS 格式转换为 Javascript 的日期。

数据库由 Hibernate 创建。 Reading 实体有一个类型为 java.sql.Timestamptime 字段,它在数据库中存储为 DATETIME

results 是一个通过控制器传递给 .jsp 的 Iterable<Reading> 对象。它被正确传递(我也将数据显示为 table)。

我正在尝试使用建议的解决方案 here,但它不起作用。

这是我试图填充图表的代码:

<c:forEach items="${results}" var="reading">
    var t = "${reading.time}".split(/[- :]/);
    var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
    data.addRow([d,${reading.temperature}]);
</c:forEach>

图表未显示。

事实:

合计:

<c:forEach items="${results}" var="reading">
    <fmt:formatDate var="time" value="${reading.time}" pattern="yyyy-MM-dd'T'HH:mm:ss" timeZone="UTC" />
    var d = new Date("${time}");
    // ...
</c:forEach>

或者,只需在控制器中使用合适的 JSON 格式化程序将 results 转换为 JSON,然后打印它,就好像它是一个 JS 变量一样 var data = ${data};。另见 a.o。 How to access array of user defined objects within <script> in JSP?


与具体问题无关:确保你的模型是java.util.Date类型。您的模型中不应包含 java.sql.* 类型的属性。如果您使用的是纯 JDBC,只需将 ResultSet#getTimestamp() 直接向上转换为 java.util.Date。另见 a.o。 Handling MySQL datetimes and timestamps in Java.