javascript getHours() не является функцией

#javascript

#javascript

Вопрос:

Я хочу добавить минутное смещение к текущему времени и отобразить его в 12-часовом формате

 var now = new Date();
var offset = 1000;
var timeOffset = now.setMinutes(now.getMinutes()   offset);
var hours = timeOffset.getHours();
var minutes = timeOffset.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0' minutes : minutes;
var newTime = hours   ':'   minutes   ' '   ampm;
console.log(newTime)  

почему это выбрасывает TypeError: dateTime.getHours is not a function ?

Комментарии:

1. .setMinutes() не возвращает экземпляр Date.

2. @Pointy верен, он возвращает «Количество миллисекунд между 1 января 1970 года 00:00:00 UTC и обновленной датой». developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…

Ответ №1:

setMinutes установите минуты на текущую дату-объект, поэтому возьмите now для дальнейших вычислений.

 var now = new Date();
var offset = 1000;
now.setMinutes(now.getMinutes()   offset);
var hours = now.getHours();
var minutes = now.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0' minutes : minutes;
var newTime = hours   ':'   minutes   ' '   ampm;
console.log(newTime)  

Ответ №2:

Следующая строка работает не так, как вы предполагали;

 var timeOffset = now.setMinutes(now.getMinutes()   offset);
  

timeOffset будет целым числом с количеством миллисекунд. Вместо определения второго параметра вы можете изменить now переменную следующим образом;

 var now = new Date();
var offset = 1000;

now.setMinutes(now.getMinutes()   offset);

var hours = now.getHours();
var minutes = now.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';

hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0' minutes : minutes;
var newTime = hours   ':'   minutes   ' '   ampm;
console.log(newTime)