Javascript Date.now()是否有不随时区变化的JS替代方案?
我构建了一个脚本,将我的网站获取的一些数据的版本放在上面,但由于来自世界各地的用户都使用它Date.now,因此根据用户所在的时区返回不同的结果 是否有一个替代Date.now的方案,或者我忽略的一个方案可以使其标准化 编辑:这是我需要的日期:Javascript Date.now()是否有不随时区变化的JS替代方案?,javascript,date,Javascript,Date,我构建了一个脚本,将我的网站获取的一些数据的版本放在上面,但由于来自世界各地的用户都使用它Date.now,因此根据用户所在的时区返回不同的结果 是否有一个替代Date.now的方案,或者我忽略的一个方案可以使其标准化 编辑:这是我需要的日期: function timeDB(){ let unix_timestamp = Date.now(); var date = new Date(unix_timestamp); var hours = date.getHours(
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;
}
这个格式化的时间将被用作my DB中的一个版本,因此我需要一个通用时间戳。如果您的环境正确配置为知道其时区,那么大多数浏览器都知道,那么您需要做的就是将时区偏移量添加到时间戳中:
Date.now() + new Date().getTimezoneOffset() * 60 * 1000
我认为您需要UTC版本的日期和时间,因此您的代码应该是
function timeDB(){
let unix_timestamp = Date.now();
var date = new Date(unix_timestamp);
var hours = date.getUTCHours();
var year = date.getUTCFullYear();
var month = date.getUTCMonth()+1;
var day = date.getUTCDate();
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;
}
这将返回相同的值,无论从哪个国家提供服务。日期。现在返回1970-01-01 UTC的偏移量(以毫秒为单位),它不受时区或夏令时的影响,但受主机系统时钟精度的影响
对于通用时间戳,应使用通用协调时间UTC值。您可以使用getUTC*方法(如等)构建自己的字符串,也可以只使用返回的字符串,并根据需要重新格式化部件
如果您只需要YYYY-MM-DD-HH,那么您可以使用一个非常简单的函数,值已经是零填充字符串,因此不需要*10技巧:
函数timeDBdate=新日期{
返回日期.toISOString.split/\D/.splite0,4.join;
}
console.logtimeDB;这取决于你需要什么。日期本质上是一个Unix时间戳,它独立于时区,尽管它默认显示在本地时区中。所以您可以直接使用Date.now和Unix时间戳。对不起,我对堆栈溢出还是新手。我用一些新信息编辑了我的帖子。Date.now不会因时区而改变。这是1970-01-01 UTC的偏移量。谢谢,这正是我需要的: