首页 > 解决方案 > JavaScript GetFullYear 函数错误

问题描述

一个小缺陷是,如果客户端系统日期较旧,则站点也会同样显示。例如,您的版权是从 2000 年到 2019 年。如果有人的日期是 2017 年,则页脚显示从 2000 年到 2017 年的版权。有没有办法解决它?与其从客户那里获取日期,不如从谷歌获取通用年份

实验

我将窗口的日期从 2019 年更改为 2017 年,当我刷新网站时,它在页脚中显示了 2017 年,而不是现实世界的日期。

标签: javascriptdatetime

解决方案


您可以查询充当时间服务器的 Web 服务,而不是直接使用 Date() 方法(从用户浏览器/操作系统检索时间)获取时间。

https://worldtimeapi.org/是一个不错的选择。

一个简单的XmlHttpRequest可以用来:

https://worldtimeapi.org/api/timezone/Etc/UTC

得到一个 JSON 响应,如:

week_number 30
utc_offset  "+00:00"
utc_datetime    "2019-07-23T19:45:27.238014+00:00"
unixtime    1563911127
timezone    "Etc/UTC"
raw_offset  0
dst_until   null
dst_offset  0
dst_from    null
dst false
day_of_year 204
day_of_week 2
datetime    "2019-07-23T19:45:27.238014+00:00"
client_ip   "12.34.56.78"
abbreviation    "UTC"

如果您将utc_dateTime提供给 Javascript 的 Date() 对象的构造函数,您可以获得正确的年份。

这是一个例子:

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://worldtimeapi.org/api/timezone/Etc/UTC");
xhr.onload = function() {
  var arr = JSON.parse(this.responseText);
  var date = new Date(arr.utc_datetime);
  console.log(date.getFullYear());
};
xhr.send();


推荐阅读