我想知道Javascript日期/时间函数是否总会返回correct, universal dates/times 或者,Javascript是客户端语言,它们取决于客户端机器的日期设置。
如果它依赖于客户端计算机,获得正确的通用时间的最佳方法是什么?
答案 0 :(得分:8)
Javascript只知道当前正在运行的环境的正确时间,而Javascript是 client-side 。
因此,Javascript受到用户在他们正在浏览的PC上具有正确时间和时区设置的摆布。
如果用户的时区不正确,但时间正确,那么取决于get42CDate()等时区的功能将不正确。
如果用户的时间不正确,则Javascript中所有与时间相关的功能都将不正确。
然而,人们可以提出这样的论点:如果用户想要在他们的PC上正确的时间,他们将设置正确的时间。与此相反的是,用户可能不知道该怎么做。答案 1 :(得分:3)
这些方法按照他们的记录去做。获取UTC信息的最佳方法显然是使用UTC方法:
答案 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/是第三方服务。如果他们选择终止服务,则您的代码将中断。编码愉快。