ejs中的日期时间格式化/自定义

时间:2016-02-02 10:41:50

标签: ejs

我在ejs中显示日期

<%= new Date();%>

它给我结果

  

2016年2月2日星期二16:02:24 GMT + 0530(IST)

但我需要显示为

  

2016年1月19日

我怎样才能在ejs中这样做?

6 个答案:

答案 0 :(得分:22)

您可以使用moment

在你的控制器中,

var moment = require('moment');
exports.index = function(req, res) {
    res.render('index', { moment: moment });
}

在你的HTML中,

<html>
    <h1><%= moment().format('Do MMMM, YYYY'); %></h1>
</html>

答案 1 :(得分:5)

您无需使用js时刻,只需使用此

statement

答案 2 :(得分:4)

帖子已经过时了,但万一遇到问题。

您可以消除安装时刻并编写一小段代码。 添加 .toDateString()将在ejs中为您提供上述格式。

但是,Moment用于更详细的日期,例如Day,或月份或年份等......

答案 3 :(得分:1)

你可以这样做:

<%= moment(user.date).format( 'MMM-DD-YYYY') %>

答案 4 :(得分:0)

为了更好的代码管理,您可以在app.js / server.js中添加以下代码。启动应用程序时,这会将moment保存在res.locals.moment中。这样,您可以从任何ejs页面访问moment变量。 app.js / server.js:

const express = require("express");
const app = express();
const moment = require("moment");

app.use((req, res, next)=>{
    res.locals.moment = moment;
    next();
  });

something.ejs

<p><%= moment(yourDateVariable).format('Do MMMM, YYYY')  %></p>

此处Do将显示19th。您可以在此处https://momentjs.com/docs/#/displaying/format/进行检查。希望这会有所帮助。

答案 5 :(得分:0)

此页面上大多数答案的问题在于,它们将使用服务器的 语言环境格式化日期,但您可能希望它们以用户的 语言环境呈现。例如,如果您的服务器位于弗吉尼亚州,那么您的日期将以东部时间的英语显示,但其他国家/地区的用户可能希望它们以不同的方式显示。

以下代码段将使用用户的语言环境呈现 date。还有改进的空间,但这是一个起点:

<p>
<script type="text/javascript">
document.write(
  new Date("<%= date.toISOString() %>").toLocaleDateString()
);
</script>
</p>

这需要服务器上的日期,将其转换为 ISO-8601 字符串,并将其插入到一个小的 JavaScript 片段中,该片段在客户端运行以生成正确的本地化输出。

有关 toLocaleString 的更多信息,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString