我正在尝试使用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);
问题是这似乎没有返回正确的时间戳。它设置的时间不是UTC,而是我的时区。知道如何在UTC中保持这个吗?
如果超过当前时间,我还想添加一天。我已经尝试检查当前并添加60*60*24
,但这返回的分钟/小时与我指定的不符。
任何帮助都会很棒!
谢谢
答案 0 :(得分:5)
如果您正在修改现有的日期对象:
var d = new Date();
d.setUTCHours(15);
d.setUTCMinutes(25);
d.setUTCSeconds(0);
d
现在将代表今天15:25 UTC。
如果你从头开始:
var d = new Date(Date.UTC(year, jsmonth, day, utchour, utcminute, utcsecond));
要获取unix时间戳,请使用getTime
,它返回自纪元UTC以来的毫秒数,然后除以1000以转换为unix时间(在秒中而不是< EM>毫秒):
Math.round(d.getTime() / 1000);
Date.now()
以UTC为单位显示UTC以来的当前时间(以毫秒为单位)。要添加一天并查看它是否在将来:
d.getTime() + (1000*60*60*24) > Date.now()
答案 1 :(得分:1)
使用您的代码尝试以下 DEMO 。
要摆脱时区,请使用to_date.setHours(0,0,0,0);
将时间设置为00:00:00:00
答案 2 :(得分:0)