Непонятно, что вы пытаетесь сделать. Если метка времени и даты всегда имеет время 00:00:00, и вы просто хотите обновить компонент времени, вы можете сделать это в виде строки.
Начиная с "2019-05-14T00: 00: 00 "не имеет смещения, он должен анализироваться как локальный, поэтому будет представлять разные моменты времени для каждого другого местоположения с другим смещением. Если он должен быть проанализирован как UT C, укажите это в OP. В любом случае это довольно просто go, вам просто нужно прояснить, как с этим следует обращаться.
Я допустил дополнительный компонент секунд.
var date1 = "13:38";
var date2 = "2019-05-14T00:00:00";
let [h, m, s] = date1.split(':');
console.log(date2.substring(0,11) + h + ':' + m + ':' + (s||'00'));
Однако, если временная метка даты и времени также имеет ненулевой компонент времени и вам нужно добавить время, объект Date может облегчить жизнь:
// Parse ISO 8601 timestamp in YYYY-MM-DDTHH:mm:ss format
// Assumes no offset, parses as local
function parseDateTime(dt) {
let [Y, M, D, h, m, s] = dt.split(/\D/);
return new Date(Y, M-1, D, h, m, s);
}
// Add time in hh:mm[:ss] format to a date
// Returns a new date, doesn't modify date passed in
function addTime(date, time) {
let [h, m, s] = time.split(/\D/);
let d = new Date(+date);
d.setHours(d.getHours() + +h,
d.getMinutes() + +m,
d.getSeconds() + +m);
return d;
}
let date1 = "13:38";
let date2 = "2019-05-14T03:42:28";
let d = parseDateTime(date2);
let e = addTime(d, date1);
// UTC timestamp in ISO 8601 format
console.log(e.toISOString());
Обратите внимание, что во втором примере отображаемое значение использует встроенный метод toISOString , который сдвигает смещение на UT C (+0 ). Если вам нужен формат ISO, но в местном часовом поясе, вы можете вручную отформатировать строку. Есть много вопросов и ответов о том, как это сделать.
Есть также множество библиотек, которые могут помочь. Поскольку объект Date не сильно изменился за последние 20 лет, все, что было в течение некоторого времени, должно быть в порядке.