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

问题描述 投票:1回答:1

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

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

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

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

javascript node.js express momentjs ejs
1个回答
2
投票

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

如果你想让用户在当地时间你需要使用frontend JS来获取它,那么你需要安装movjs的浏览器版本并将其添加到你的前端代码中。无论如何都没有在服务器端获得用户本地时间(例如,如果他们向俄罗斯提出请求并且您的服务器位于澳大利亚)。

EJS视图可能会混淆这种方式,因为你有前端JS,它已经被提供给浏览器,你在服务器上运行的模板中有JS。

如果你真的需要为服务器端获取用户本地时区,你可以在初始请求中推送时区(可能作为url param)并按照这种方式进行操作,但如果你是为显示目的而做的那样你就不会想要那样做。

© www.soinside.com 2019 - 2024. All rights reserved.