Я много пробовал в этом сообществе, но, похоже, для моего случая нет гиперспецифичного сценария.
Так что в основном у меня есть строка в формате 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]
}
Это все прекрасно, но проблема в том, что я получаю метку времени относительно часового пояса моего компьютера. (GMT + 9). Итак, моя эпоха - 9-й час 1970-01-01. Что не то, что мне нужно. Мне нужна метка времени по Гринвичу +0 UTC.
В этом сценарии я получу 1541948400
и 1542121199
, start и end соответственно; где я должен был получить 1541980800
и 1542153599
.
Tasukete Kudasai