我在ejs中显示日期
<%= new Date();%>
它给我结果
2016年2月2日星期二16:02:24 GMT + 0530(IST)
但我需要显示为
2016年1月19日
我怎样才能在ejs中这样做?
答案 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