Как вычесть минуты из даты в javascript?
Как я могу перевести этот псевдокод в рабочий 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());
8 ответов:
как только вы это узнаете:
- вы можете создать
Dateпо телефону конструктор С миллисекундах с 1 января 1970 года.- The
valueOf()aDate- это количество миллисекунд с 1 января 1970 года- здесь
60,000миллисекунды в минуту: -]...это не так уж и сложно.
в коде ниже, новый
Dateсоздается путем вычитания соответствующего количества миллисекунд изmyEndDateTime:var MS_PER_MINUTE = 60000; var myStartDate = new Date(myEndDateTime - durationInMinutes * MS_PER_MINUTE);
вы также можете использовать get и установить минут для его достижения:
var endDate = somedate; var startdate = new Date(endDate); var durationInMinutes = 20; startdate.setMinutes(endDate.getMinutes() - durationInMinutes);
все это просто галочки, не нужно запоминать методы...
var aMinuteAgo = new Date( Date.now() - 1000 * 60 );или
var aMinuteLess = new Date( someDate.getTime() - 1000 * 60 );обновление
после работы с momentjs, я должен сказать, что это удивительная библиотека, вы должны проверить. Это правда, что тики работают во многих случаях, делая ваш код очень крошечным, и вы должны попытаться сделать свой код как можно меньше для того, что вам нужно сделать. Но для всего сложного используйте momentjs.
момент.js имеет некоторые хорошие методы удобства для управления объектами даты
на .вычтите метод, позволяет вычесть определенное количество единиц времени из даты, предоставив сумму и строку timeunit.
var now = new Date(); // Sun Jan 22 2017 17:12:18 GMT+0200 ... var olderDate = moment(now).subtract(3, 'minutes').toDate(); // Sun Jan 22 2017 17:09:18 GMT+0200 ...
вот что я нашел:
//First, start with a particular time var date = new Date(); //Add two hours var dd = date.setHours(date.getHours() + 2); //Go back 3 days var dd = date.setDate(date.getDate() - 3); //One minute ago... var dd = date.setMinutes(date.getMinutes() - 1); //Display the date: var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var date = new Date(dd); var day = date.getDate(); var monthIndex = date.getMonth(); var year = date.getFullYear(); var displayDate = monthNames[monthIndex] + ' ' + day + ', ' + year; alert('Date is now: ' + displayDate);источники:
var date=new Date(); //here I am using "-30" to subtract 30 minutes from the current time. var minute=date.setMinutes(date.getMinutes()-30); console.log(minute) //it will print the time and date according to the above condition in Unix-timestamp format.вы можете конвертировать метку времени Unix в обычное время с помощью
new Date().напримерvar extract=new Date(minute) console.log(minute)//this will print the time in the readable format.
вот что я сделал: смотрите на Codepen
var somedate = 1473888180593; var myStartDate; //var myStartDate = somedate - durationInMuntes; myStartDate = new Date(dateAfterSubtracted('minutes', 100)); alert("The event will start on " + myStartDate.toDateString() + " at " + myStartDate.toTimeString()); function dateAfterSubtracted(range, amount){ var now = new Date(); if(range === 'years'){ return now.setDate(now.getYear() - amount); } if(range === 'months'){ return now.setDate(now.getMonth() - amount); } if(range === 'days'){ return now.setDate(now.getDate() - amount); } if(range === 'hours'){ return now.setDate(now.getHours() - amount); } if(range === 'minutes'){ return now.setDate(now.getMinutes() - amount); } else { return null; } }
расширить класс Date с помощью этой функции
// Add (or substract if value is negative) the value, expresed in timeUnit // to the date and return the new date. Date.dateAdd = function(currentDate, value, timeUnit) { timeUnit = timeUnit.toLowerCase(); var multiplyBy = { w:604800000, d:86400000, h:3600000, m:60000, s:1000 }; var updatedDate = new Date(currentDate.getTime() + multiplyBy[timeUnit] * value); return updatedDate; };таким образом, вы можете добавить или вычесть количество минут, секунд, часов, дней... на любую дату.
add_10_minutes_to_current_date = Date.dateAdd( Date(), 10, "m"); subs_1_hour_to_a_date = Date.dateAdd( date_value, -1, "h");
Comments