Как я могу перевести этот псевдокод в рабочий js [не беспокойтесь о том, откуда берется дата окончания, за исключением того, что это действительная дата javascript].
var myEndDateTime = somedate; //somedate is a valid js date
var durationInMinutes = 100; //this can be any number of minutes from 1-7200 (5 days)
//this is the calculation I don't know how to do
var myStartDate = somedate - durationInMuntes;
alert("The event will start on " + myStartDate.toDateString() + " at " + myStartDate.toTimeString());
javascript
Brendan
источник
источник
.getTime()
. Пример:var myStartDate = new Date(myEndDateTime.getTime() + durationInMinutes * MS_PER_MINUTE);
var myStartDate = somedate.addMinutes(-durationInMuntes);
я предполагаю, что somedate - это объект Datevar d = new Date("2017-10-29 01:50:00"), e = new Date(d.getTime() + 20 * 60000);
вы ожидаете, чтоe
это будет02:10:00
, верно? Нет.01:10:00
, DST говорит привет. А еще есть дополнительные секунды ...Вы также можете использовать минуты получения и установки для достижения этой цели:
источник
setMinutes()
достаточно умен, чтобы правильно обращаться с отрицательными минутами. Итак, если дата начала была 3:05, и вы хотите вычесть 30 минут, вы-25
перейдете к setMinutes (), который достаточно умен, чтобы знать, что3:-25
это так2:35
. (то есть исключение не возникает.).setMinutes(...)
дескриптора силыint
. Если вы установите значение1.5 minutes
a,Date
то значения1 minute
секунд будут такими же, как и раньше.Все галочки, методы запоминать не надо ...
или
Обновить
После работы с momentjs я должен сказать, что это потрясающая библиотека, которую вам стоит попробовать. Это правда, что во многих случаях срабатывают галочки, делая ваш код очень маленьким, и вам следует постараться сделать свой код как можно меньше для того, что вам нужно делать. Но для чего-нибудь сложного используйте momentjs.
источник
moment.js есть несколько действительно удобных методов для управления объектами даты
Метод .subtract позволяет вычесть из даты определенное количество единиц времени, указав количество и строку единиц времени.
источник
Вот что я нашел:
Источники:
http://www.javascriptcookbook.com/article/Perform-date-manipulations-based-on-adding-or-subtracting-time/
https://stackoverflow.com/a/12798270/1873386
источник
вы можете преобразовать временную метку Unix в обычное время, используя,
new Date()
например,.источник
Попробуйте, как показано ниже:
источник
Вот что я сделал: см. На Codepen
источник
new Date()
, но имеет некоторую указанную дату и спрашивает только о вычитании минут. Кроме того, ваш код не работает - он возвращает временную метку UNIX вместо объекта Date.Расширить класс Date с помощью этой функции
Таким образом, вы можете добавлять или вычитать количество минут, секунд, часов, дней ... к любой дате.
источник