【发布时间】:2019-04-15 19:35:42
【问题描述】:
我从这个社区尝试了很多,但似乎没有针对我的案例的超具体场景。
所以基本上我有一个yyyy-mm-dd 格式的字符串。我使用日期方法来调整它并在日期上添加时间以使其更具体。我想将其转换为时间戳,同时忽略客户端计算机的当前时区(或使用 UTC 时区)。
我有这个代码:
function getTimestampRange(sparams, eparams){
sparams = "2018-11-12", eparams = "2018-11-13"; //sample param values
const start = sparams.split("-");
const end = eparams.split("-");
const startDate = new Date(start[0], start[1] - 1, start[2]);
const endDate = new Date(end[0], end[1] - 1, end[2]);
endDate.setHours(23);
endDate.setMinutes(59);
endDate.setSeconds(59);
//startDate is 2018-11-12 00:00:00 and endDate is 2018-11-13 23:59:59
const startTS = startDate.getTime() / 1000;
const endTS = endDate.getTime() / 1000;
return [startTS, endTS]
}
这一切都很好,但问题是,我正在获取相对于我的计算机时区的时间戳。 (格林威治标准时间+9)。所以我的时代是 1970-01-01 的第 9 个小时。这不是我需要的。我需要 GMT+0 UTC 时间戳。
在这种情况下,我会得到 1541948400 和 1542121199,分别是 start 和 end;我应该在哪里得到1541980800 和1542153599。
薅羊毛
【问题讨论】:
-
" 我想将其转换为时间戳,同时忽略客户端计算机的当前时区" ????时间戳与时区无关。它们反映了自 1970-01-01T00:00:00Z 以来的秒数(或毫秒数)
-
@Phil 我不知道如何正确表达它,但我在这个方法上得到了不同的时间戳,这是一个非常简单的算法。当我转换我在这种方法中得到的时间戳时,它总是比 UTC 早 9 小时
标签: javascript date timestamp epoch