【问题标题】:array.map Differences between Client and Node Serverarray.map 客户端和节点服务器的区别
【发布时间】:2021-06-04 00:25:56
【问题描述】:

我正在使用 moment.js 来转换日期的格式。执行以下代码时,如果从客户端执行,结果是正确的。但是,如果我从 Node 服务器运行完全相同的代码,它就不起作用了……会发生什么?

     const data = [{id:1,date: "2021-06-21T00:00:00.000Z"},{id:2,date: "2021-06-22T00:00:00.000Z"},{id:3,date: "2021-06-23T00:00:00.000Z"}]
     const result = data.map( x => {
              x.date= moment(x.date).format('DD/MM/YYYY');
              return x
              });
    
      console.log(result)

    //Return from client (Chrome, Firefox):
    [{id:1,date: "21/06/2021"},{id:2,date: "22/06/2021"},{id:3,date: "23/06/2021"}]

    //Return from Node.js:
    [{id:1,date: "2021-06-21T00:00:00.000Z"},{id:2,date: "2021-06-22T00:00:00.000Z"},{id:3,date: "2021-06-23T00:00:00.000Z"}]

【问题讨论】:

  • 您的代码没有问题。你是 console.log(data) 而不是 console.log(result)?
  • 没有。我不明白出了什么问题

标签: javascript node.js arrays momentjs


【解决方案1】:

Array.map 的行为在服务器和客户端上没有区别。

真正的问题是服务器和客户端处理时间的方式不同。

通常,服务器时间设置为UTC,客户端遵循操作系统的系统时间。

按 UTC、时区、偏移量等搜索。

"new Date()" on the browser and on the server will give different results.

[browser]
result > Fri Jun 04 2021 09:37:57 GMT+0900

[server]
result > 2021-06-04T00:38:03.316Z

【讨论】:

  • 你好。我明白你的解释,但这并不能解决问题。我在 moment 设置中设置了 UTC 选项:moment (x.date) .utc ()。格式('DD / MM / YYYY');结果是一样的。这没用。在服务器端和客户端设置相同的时区。不利因素仍在继续。我想不出解决办法了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 2018-10-28
  • 2018-11-04
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
相关资源
最近更新 更多