【问题标题】:new Date() have different output in app.js and ejsnew Date() 在 app.js 和 ejs 中有不同的输出
【发布时间】:2019-08-09 13:29:50
【问题描述】:
app.get("/test",function(req,res){
var d = new Date();
res.send(d);
});

当我通过 mydomain/test 访问时,这会给出输出“2019-03-19T04:50:47.710Z”,即 UTC

app.get("/testejs",function(req,res){
res.render("testejs");});

下面是我的testejs-

<%= new Date() %>

当通过 mydomain/testejs 访问这个 ejs 时会给出输出 -

2019 年 3 月 19 日星期二 12:55:52 GMT+0800(新加坡标准时间)

new Date() 怎么可能给我两个不同的输出( app.js 和 testejs.ejs )但它是在同一台服务器上执行的?

【问题讨论】:

  • 当我尝试在 IST 上午 9 点组织活动时,它以 UTC 格式保存为 01:**:** 。它应该保存为 3:30 UTC,因为我正在从浏览器的日期选择器中组织它。
  • 我尝试将服务器时间更改为 IST 。当我使用终端检查日期时,它会在 IST 中显示正确的时间。但在后台将其保存为新加坡当地时间。
  • 有谁知道为什么终端提供 IST 并且服务器通过减去 8 小时来以 UTC 保存数据?

标签: javascript html node.js express ejs


【解决方案1】:

它们都不是两个不同的日期,而是不同时区的同一日期。

不同格式的原因是 toString() 方法是如何为 Date 对象编写的, toString() 方法的编写方式是返回 UTC 格式的日期,因此当您在浏览器上发送它时,它会调用 toString 来获取日期,因为在挂载之前所有内容都将转换为字符串。

new Date() 调用构造函数并返回日期实例,该实例也将具有其所有方法,但是 Date() 是一个返回字符串化日期的函数。

请看下面的例子

date = new Date('Tue Mar 19 2019 12:55:52 GMT+0800')

console.log(date)
console.log('toString-%s',date.toString())
console.log('toString-%s',''+date)
console.log('Tue Mar 19 2019 12:55:52 GMT+0800')
//Managing offsets
console.log(Date('Tue Mar 19 2019 12:55:52 GMT+0800'))
date.setTime(date.getTime() + (8-5.5)*60*1000 );
console.log(date)

【讨论】:

    【解决方案2】:

    美好的一天, 记住app.js运行在服务器端,ejs运行在浏览器上,浏览器日期格式与服务器不同。

    【讨论】:

    • 如文档所述 - EJS 是一种简单的模板语言,可让您使用纯 JavaScript 生成 HTML 标记。我认为它在服务器中执行文件并向客户端发送一个简单的 HTML。我说的对吗?
    • 你是对的@VikramRay,只需打印由 从服务器传递到客户端站点的 d 变量,您的格式将保持一致。
    • 知道了。谢谢。
    【解决方案3】:

    new Date() 生成一个日期值,它是自基准时间(通常是 1970 年 1 月 1 日)以来的毫秒数。确切的值取决于生成该值的服务器上的时钟设置。

    该值可以以多种方式显示。

    根据客户端环境的默认设置, 我在 UTC 或本地 [或其他] 时区, 和各种格式。

    请注意,04:50 UTC 和 12:55 GMT+0800 相隔大约 5 分钟, 但在不同的时区。如果这是两个测试运行 5 分钟 分开,这可以解释差异。

    而不是使用默认的 toString() 方法来显示时间, 使用 getTime() 查看原始数字是多少。

    【讨论】:

      【解决方案4】:

      new Date().toLocaleString()

      Click here Out put is there

      new Date(Date.now()).toLocaleString()

      使用日期函数 3/19/2019 上午 10:58:31 输出 nodejs 后端和前端 ejs 示例

      【讨论】:

      • getFullYear() 以四位数形式获取年份 (yyyy) getMonth() 以数字形式获取月份 (0-11) getDate() 以数字形式获取日期 (1-31) getHours() 获取小时 (0-23) getMinutes() 获取分钟 (0-59) getSeconds() 获取秒 (0-59) getMilliseconds() 获取毫秒 (0-999) getTime() 获取时间(自 1970 年 1 月 1 日以来的毫秒数) getDay() 以数字形式获取工作日 (0-6) Date.now() 获取时间。 ECMAScript 5.
      • 如果您想在客户端显示相同的日期和时间,那么您可以将数据从服务器端传递到客户端第 1 步:app.js res.render('pages/home',{"serverdate" :new Date().toLocaleString()});第 2 步:ejs 文件
      • 会记住这一点并尝试使用 .tolocalString 。
      猜你喜欢
      • 2016-03-14
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2013-02-13
      • 2014-09-21
      • 2011-06-10
      • 1970-01-01
      相关资源
      最近更新 更多