Javascript日期/时间函数是否依赖于客户端计算机?

时间:2009-06-19 02:00:55

标签: javascript jquery datetime

我想知道Javascript日期/时间函数是否总会返回correct, universal dates/times 或者,Javascript是客户端语言,它们取决于客户端机器的日期设置。

如果它依赖于客户端计算机,获得正确的通用时间的最佳方法是什么?

5 个答案:

答案 0 :(得分:8)

Javascript只知道当前正在运行的环境的正确时间,而Javascript是 client-side

因此,Javascript受到用户在他们正在浏览的PC上具有正确时间和时区设置的摆布。

如果用户的时区不正确,但时间正确,那么取决于get42CDate()等时区的功能将不正确。

如果用户的时间不正确,则Javascript中所有与时间相关的功能都将不正确。

然而,人们可以提出这样的论点:如果用户想要在他们的PC上正确的时间,他们将设置正确的时间。与此相反的是,用户可能不知道该怎么做。

答案 1 :(得分:3)

这些方法按照他们的记录去做。获取UTC信息的最佳方法显然是使用UTC方法:

getUTCFullYear()getUTCMonth()getUTCDate()

答案 2 :(得分:3)

正如thomasrutter所说,javascript日期功能依赖于客户端的机器。但是,如果您想获得一个权威日期,您可以向服务器发出只需返回日期字符串的ajax请求。然后,您可以使用以下

将日期字符串转换为日期对象
var ds = ... // Some ajax call
var d = new Date(ds);

答案 3 :(得分:2)

  

或者,Javascript是否是客户端语言,它们依赖于客户端机器的日期设置。

是的,这是正确的。

  

如果它依赖于客户端计算机,获得正确的通用时间的最佳方法是什么?

从权威来源获取时间/日期,而不是从客户端计算机获取。

答案 4 :(得分:0)

Javascript的date()构造函数将始终获取本地计算机的时间。

获得世界通用时间的最好方法是

1)通过ajax调用从服务器获取时间。无论用户身在何处,此方法都会始终显示服务器时间。

2)从第三方服务器获取时间。使用第三方服务器从世界任何时区/国家/地区获取时间。在这里,我通过使用简单的javascript和axios来解释此方法。我正在使用的服务是worldtimeapi.org/

VANILLA JS

function getTime(url) {
    return new Promise((resolve, reject) => {
        const req = new XMLHttpRequest();
        req.open("GET", url);
        req.onload = () =>
            req.status === 200
                ? resolve(req.response)
                : reject(Error(req.statusText));
        req.onerror = (e) => reject(Error(`Network Error: ${e}`));
        req.send();
    });
}

现在使用此功能进行ajax调用

let url = "http://worldtimeapi.org/api/timezone/Etc/GMT";

getTime(url)
    .then((response) => {
        let dateObj = JSON.parse(response);
        let dateTime = dateObj.datetime;
        console.log(dateObj);
        console.log(dateTime);
    })
    .catch((err) => {
        console.log(err);
    });

AXIOS

axios({
    url:"http://worldtimeapi.org/api/timezone/Etc/GMT",
    method: "get",
})
    .then((response) => {
        let dateObj = response.data;
        let dateTime = dateObj.datetime;
        console.log(dateObj);
        console.log(dateTime);
    })
    .catch((err) => {
        console.log(err);
    });

希望有帮助。请记住,worldtimeapi.org/是第三方服务。如果他们选择终止服务,则您的代码将中断。编码愉快。