gpt4 book ai didi

javascript - 是否有一个 JS 替代 Date.now() 不会根据时区变化?

转载 作者:行者123 更新时间:2023-12-02 21:18:18 25 4
gpt4 key购买 nike

我构建了一个脚本来将版本放在我的网站获取的某些数据上,但由于来自世界各地的用户都使用它,Date.now() 根据用户所在的时区返回不同的结果。

是否有 Date.now() 的替代方案或我忽略的可以标准化此选项的选项?

编辑:这就是我需要的日期:

function timeDB(){
let unix_timestamp = Date.now();
var date = new Date(unix_timestamp);
var hours = date.getHours();
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();

if ( month <10){
year = year*10;
}
if ( day <10){
month = month*10;
}
if ( hours <10){
day = day*10;
}
var formattedTime = year + '' + month + '' + day + '' + hours;
return formattedTime;
}

此格式化时间将用作我的数据库中的版本,因此我需要一个通用时间戳。

最佳答案

Date.now 返回距 1970-01-01 UTC 的毫秒偏移量,它不受时区或夏令时的影响,但会受到主机系统时钟精度的影响。

对于“通用”时间戳,您应该使用通用协调时间 (UTC) 值。您可以使用 getUTC* 方法构建您自己的字符串,例如 getUTCFullYear , getUTCMonth等,或者仅使用 toISOString 返回的字符串并重新格式化各部分以适应。

如果您只想要 YYYY MM DD HH 那么您可以使用一个非常简单的函数,这些值已经是零填充字符串,因此不需要 * 10 技巧:

function timeDB(date = new Date()) {
return date.toISOString().split(/\D/).splice(0,4).join('');
}

console.log(timeDB());

how to format a date 上已经有很多问题和答案。 .

但是,如果您只想使用唯一的版本控制值并且仅使用当前日期,那么仅使用 Date.now 返回的值就足够了。它只长了 3 位数字,如果您愿意,您可以将其削减到 10 位数字:

String(Date.now()).slice(0,10);

这实际上为您提供了自 1970 年 1 月 1 日(相当常见)纪元以来的以秒为单位的时间戳,并且可以轻松转回日期。

关于javascript - 是否有一个 JS 替代 Date.now() 不会根据时区变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60912350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com