如何在EJS视图中使用momet js,但获取用户本地时间而不是服务器时间?

时间:2019-03-07 11:44:16

标签: javascript node.js express momentjs ejs

我目前正在使用app.locals从服务器传递Moment js。

app.locals.moment = require('moment');

我正在尝试在显示时间时调用local()函数,但它仍显示从服务器获取的时间。

是否可以使用此方法在用户时区中显示时间?

1 个答案:

答案 0 :(得分:2)

您在EJS视图中运行的JS将在服务器端上运行,然后将其结果提供给用户。因此,您将无法使用后端的时间来获取用户前端的本地时间。

如果您希望用户使用本地时间,则需要使用前端JS进行获取,因此您需要安装momentjs的浏览器版本并将其添加到前端代码中。无论如何,在服务器端都无法获得用户的本地时间(例如,如果他们从俄罗斯发出请求,而您的服务器在澳大利亚,那该怎么办)。

EJS视图可能会造成这种混乱,因为您已经将前端JS提供给浏览器,并且已经将JS包含在服务器上运行的模板中。

如果您确实需要为服务器端获取用户本地时区,则可以在初始请求中上载时区(可能作为url参数),并以这种方式获取,但是如果您出于显示目的而进行操作您不想这样做。