在JavaScript中创建UTC日期,添加一天,获取unix时间戳

dzm*_*dzm 0 javascript timestamp utc

我正在尝试用JavaScript在UTC中构建日期,同时指定一小时和分钟,然后获取它的时间戳.

例如,如果我有15小时和25分钟,我这样做:

var to_date = new Date();
to_date.setUTCHours(15);
to_date.setUTCMinutes(25);
var to_utc = new Date(to_date.getUTCFullYear(), 
              to_date.getUTCMonth(), 
              to_date.getUTCDate(), 
              to_date.getUTCHours(), 
              to_date.getUTCMinutes(), 
              to_date.getUTCSeconds());
var to_unix = Math.round(to_utc.getTime() / 1000);
console.log(to_unix);
Run Code Online (Sandbox Code Playgroud)

问题是这似乎没有返回正确的时间戳.它设置的时间不是UTC,而是我的时区.知道如何在UTC中维护这个吗?

如果超过当前时间,我还想增加一天的时间.我已经尝试检查当前和添加60*60*24,但这返回的分钟/小时与我指定的不符.

任何帮助都会很棒!

谢谢

jos*_*736 5

如果您正在修改现有的日期对象:

var d = new Date();
d.setUTCHours(15);
d.setUTCMinutes(25);
d.setUTCSeconds(0);
Run Code Online (Sandbox Code Playgroud)

d 现在将代表今天15:25 UTC.

如果你从头开始:

var d = new Date(Date.UTC(year, jsmonth, day, utchour, utcminute, utcsecond));
Run Code Online (Sandbox Code Playgroud)

要获取unix时间戳,请使用getTime,返回自纪元UTC以来的毫秒数,然后除以1000以转换为unix时间(以单位,而不是毫秒):

Math.round(d.getTime() / 1000);
Run Code Online (Sandbox Code Playgroud)

Date.now()以UTC为单位,以UTC为单位显示当前UTC时间.要添加一天并查看它是否在将来:

d.getTime() + (1000*60*60*24) > Date.now()
Run Code Online (Sandbox Code Playgroud)