【问题标题】:Displaying the MySQL date correctly正确显示 MySQL 日期
【发布时间】:2019-04-22 05:46:51
【问题描述】:

所以我正在使用此代码

let obj = {print: rows}
    res.render('../views/pages/data', obj)

使用此代码在 ejs 文件中呈现我的数据

<table>
    <% print.forEach(function (student) { %>

        <tr class="table-info">
        <td><%= student.firstName %></td>
        <td><%= student.lastName %></td>

        <td><%= student.building %></td>
        <td><%= student.room %></td>
        <td><%= student.checkIn %></td>
        <td><%= student.checkOut %></td>


        </tr>
        <% }) %>

但签入和签出日期的显示方式与 MySQL 中的不同。 在数据库中它只显示数据和时间,但是当我在 ejs 文件上显示它时,它会像这样显示 checkIn 和 checkOut

Mon Nov 19 2018 12:56:09 GMT-0500 (Eastern Standard Time)   Mon Nov 19 2018 12:56:47 GMT-0500 (Eastern Standard Time)

如何摆脱 GMT-500(东部标准时间)?

【问题讨论】:

标签: mysql node.js database ejs


【解决方案1】:

使用toUTCString() 摆脱-0500 (Eastern Standard Time) 但GMT 将在那里。要摆脱整个 GMT-0500 (Eastern Standard Time) 字符串,您需要进行如下操作:

today.toUTCString().split('GMT')[0];

最好的做法是在服务器端将 DateTime 操作为 String 格式,或者至少在 UI 上呈现它之前嵌入 JavaScript。

如果您想在客户端 (HTML) 端执行此操作,则需要使用 JavaScript 字符串操作函数。所以在你的情况下,它应该是这样的:

<table>
    <% print.forEach(function (student) { %>

        <tr class="table-info">
        <td><%= student.firstName %></td>
        <td><%= student.lastName %></td>

        <td><%= student.building %></td>
        <td><%= student.room %></td>
        <td><%= student.checkIn.split('GMT')[0] %></td>
        <td><%= student.checkOut.split('GMT')[0] %></td>


        </tr>
        <% }) %>

我不确定这是否是实现您想要的最佳方式,但如果您不想更改代码,那么上面可能是您问题的最接近的解决方案。

【讨论】:

  • 如果我使用 .split('GMT')[0] 我得到 'student.checkIn.split is not a function'
  • 当我使用 rows[0].checkIn 控制台记录结果时,它只显示日期和时间,没有 GMT 和多余
  • 这种作品。在时间之后,它给我留下了一个 ,
  • 然后与, GMT 拆分,它应该可以工作。这意味着:&lt;td&gt;&lt;%= data.checkOut.toUTCString().split(', GMT') %&gt;&lt;/td&gt;
  • 我决定去掉 ,保留 GMT 并减小字体大小
猜你喜欢
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2020-08-15
  • 2015-02-14
  • 2016-06-07
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多