Меня удивляет, что объект Date в JavaScript не реализует какую-либо функцию добавления.
Я просто хочу функцию, которая может сделать это:
var now = Date.now();
var fourHoursLater = now.addHours(4);
function Date.prototype.addHours(h) {
// how do I implement this?
}
Я просто хотел бы получить несколько указателей в направлении.
Нужно ли делать разбор строк?
Могу ли я использовать setTime?
Как насчет миллисекунд?
Нравится:
new Date(milliseconds + 4*3600*1000 /*4 hrs in ms*/)?
Это кажется действительно взломанным, хотя - и это даже работает?
javascript
datetime
Джефф Фрикадель Ян
источник
источник
Тестовое задание:
источник
var date = new Date(2012, 10, 22, 23, 0, 1); date.toString(); // Thu Nov 22 2012 23:00:01 GMT+0100 (CET) date.setHours(date.getHours() + 1); date.toString(); // Fri Nov 23 2012 00:00:01 GMT+0100 (CET)
Он также отлично работает с setMinutes ()Приведенный ниже код должен добавить 4 часа к дате (пример сегодняшней даты)
Это не приведет к ошибке, если вы попытаетесь добавить 4 к 23 (см. Документы ):
источник
setTime
илиsetUTCHour
.Вероятно, лучше сделать метод addHours неизменным, возвращая копию объекта Date, а не изменяя его параметр.
Таким образом, вы можете связать несколько вызовов методов, не беспокоясь о состоянии.
источник
add*
обычно используется для изменения самого объекта.add
часто используется в классе .NET FrameworkDateTime
и имеет то же значение, что и+
(плюс) в Math.currentDate.addHours(1)
<- Исходя из моего программного инстинкта, я ожидаю, чтоcurrentDate
значение изменится, но в вашей реализации этого не произойдет. Что касается того, почему я предлагаю переименовать или изменить свою подпись на что-тоadd
Версия, предложенная kennebec, потерпит неудачу при переходе на летнее или зимнее время, так как это номер часа, который установлен.
добавит
h
часы кthis
независимым от времени системным особенностям. Метод Джейсона Харвига также работает.источник
Вы можете использовать моментальные http://momentjs.com/ Библиотека.
источник
Я также думаю, что оригинальный объект не должен быть изменен. Таким образом, чтобы спасти будущую рабочую силу, вот комбинированное решение, основанное на ответах Джейсона Харвига и Тахира Хасана :
источник
В библиотеке Datejs есть дополнение .
И вот методы даты JavaScript . Кеннебек мудро упомянул getHours () и setHours ();
источник
Проверьте, не определен ли он, иначе определите его в прототипе Date:
источник
Другой способ справиться с этим - преобразовать дату в unixtime (эпоху), затем добавить эквивалент в (милли) секундах, а затем преобразовать его обратно. Таким образом, вы можете обрабатывать переходы дня и месяца, например добавление 4 часов к 21, что должно привести к следующему дню, 01:00.
источник
Для простого добавления / вычитания функции часа / минуты в javascript попробуйте это:
Это можно использовать без параметров, чтобы получить текущее время
или с параметрами, чтобы получить время с добавленными минутами / часами
даже негативное время работает
эта функция возвращает массив
источник
СПРБРН правильный. Для того чтобы учесть начало / конец месяца и года, вам необходимо перейти в эпоху и обратно.
Вот как вы это делаете:
или сделать это в одной строке (где имена переменных такие же, как указано выше:
источник
Это простой способ получить увеличенное или уменьшенное значение данных.
источник
Немного грязно, но это работает!
Учитывая формат даты как это: 2019-04-03T15: 58
Ваш вывод будет: 2019-04-03T16: 58
источник