【问题标题】:How to set a variable as Date type in ejs?如何在ejs中将变量设置为日期类型?
【发布时间】:2016-06-30 17:39:30
【问题描述】:

我正在使用 express.js、mongoose 和 ejs,我有一个类似的模型

var t_schema = new mongoose.Schema({
  name: String,
  startFrom: Date,
  ...
})

router.get('/', function(req,res) {
 t_model.findOne({name: req.body.name}, function(result) {res.render('t', result)})
})

所以结果包含一个日期类型 startFrom

在我的 ejs 中:

$('#startDate').datepicker.set(<%= result.startDate %>)

这是一个String而不是Date,而datepicker.set需要Date。

如何将 result.startDate 设为日期?

$('#startDate').datepicker.set(new Date('&lt;%= result.startDate %&gt;'))

似乎可行,但时区不正确。

还有 2.)

在 Nodejs/mongodb 中操作日期的最佳实践是什么? 我的用户将来自不同的时区,所以我想在浏览器中的时区显示日期时间,我认为在 Mongodb 中将日期存储为 UTC 可能更好?

【问题讨论】:

  • 这可能更适合作为两个不同的问题。
  • “时区不正确”是什么意思?
  • 可能是服务器的时区和浏览器的时区不同?
  • 如您所说,用户来自不同的时区。您应该假设浏览器和服务器有不同的时区。

标签: node.js mongodb date datetime ejs


【解决方案1】:

首先回答问题2,是的,最好在mongo中将日期存储为UTC,然后在显示给个人用户时,根据用户浏览器时区转换为本地时间。或者不做任何转换,只说时间是 UTC。

要回答第一个问题,您的 jquery datepicker 可以设置为:

Date date = new Date('<%= result.startDate %>'); 
$('#startDate').datepicker('setDate', date.toUTCString());

【讨论】:

  • 我应该在浏览器中将日期转换为 UTC 吗?不同用户的浏览器时区不同,服务器时区也不同
  • 我会将数据以 UTC 格式存储在 mongo 中。是否以本地时间显示时间是一个设计决定,但我会用浏览器来处理,而不是在服务器上。
猜你喜欢
  • 1970-01-01
  • 2012-11-24
  • 2019-12-21
  • 1970-01-01
  • 2014-03-11
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2020-03-25
相关资源
最近更新 更多