В Windows я создал файл git.bat и связал его с расширением .hook.
if not exist %1 exit
set bash=C:\Program Files (x86)\Git\bin\bash.exe
"%bash%" --login -i -c "exec "%1""
После этого вы можете запускать файлы .hook, такие как каждый .bat или .cmd-файл, кроме что они работают под оболочкой git ...
var d1 = new Date (),
d2 = new Date ( d1 );
d2.setMinutes ( d1.getMinutes() + 30 );
alert ( d2 );
var oldDateObj = новая дата (); var newDateObj = новая дата (); newDateObj.setTime (oldDateObj.getTime () + (30 * 60 * 1000)); console.log (newDateObj);
Может быть, что-то вроде этого?
var d = new Date (); var v = новая дата (); v.setMinutes (d.getMinutes () + 30); console.log (v)
Если вы много работаете с датами, вы можете изучить библиотеки дат JavaScript, например Datejs или Moment.js . Например, для Moment.js это просто:
var newDateObj = moment(oldDateObj).add(30, 'm').toDate();
Это похоже на ответ хаоса , но в одной строке:
var newDateObj = new Date(oldDateObj.getTime() + diff*60000);
Где diff
- это разница в минутах, которую вы хотите, от времени oldDateObj
. Оно может быть даже отрицательным.
Или как функция многократного использования, если вам нужно сделать это в нескольких местах:
function addMinutes(date, minutes) {
return new Date(date.getTime() + minutes*60000);
}
И на всякий случай это неочевидно, почему мы умножаем минуты на 60000
переводит минуты в миллисекунды.
Вы можете подумать, что можете добавить к дате 24 часа, чтобы получить свидание завтра, право? Неверно!
addMinutes(myDate, 60*24); //DO NOT DO THIS
Оказывается, если пользователь соблюдает летнее время, день не обязательно длится 24 часа. Один день в году длится всего 23 часа, а один день в году длится 25 часов. Например, в большинстве Соединенных Штатов и Канады через 24 часа после полуночи 2 ноября 2014 года все еще остается 2 ноября:
const NOV = 10; //because JS months are off by one...
addMinutes(new Date(2014, NOV, 2), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!
Вот почему использование одной из вышеупомянутых библиотек является более безопасным вариантом , если вам нужно проделать с этим много работы.
Ниже представлена более общая версия этой функции, которую я написал. Я все равно рекомендую использовать библиотеку, но это может быть излишним / невозможным для вашего проекта. Синтаксис моделируется на основе функции MySQL DATE_ADD .
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd(new Date(), 'minute', 30) //returns 30 minutes from now.
* https://stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd(date, interval, units) {
if(!(date instanceof Date))
return undefined;
var ret = new Date(date); //don't change original date
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break;
case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break;
case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break;
case 'week' : ret.setDate(ret.getDate() + 7*units); break;
case 'day' : ret.setDate(ret.getDate() + units); break;
case 'hour' : ret.setTime(ret.getTime() + units*3600000); break;
case 'minute' : ret.setTime(ret.getTime() + units*60000); break;
case 'second' : ret.setTime(ret.getTime() + units*1000); break;
default : ret = undefined; break;
}
return ret;
}
Рабочая демонстрация jsFiddle .
Один день в году длится всего 23 часа, а один день в году длится 25 часов. Например, в большинстве Соединенных Штатов и Канады через 24 часа после полуночи 2 ноября 2014 г. все еще остается 2 ноября:const NOV = 10; //because JS months are off by one...
addMinutes(new Date(2014, NOV, 2), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!
Вот почему использование одной из вышеупомянутых библиотек является более безопасным вариантом , если вам нужно проделать с этим много работы.
Ниже представлена более общая версия этой функции, которую я написал. Я по-прежнему рекомендую использовать библиотеку, но это может быть излишним / невозможным для вашего проекта. Синтаксис моделируется на основе функции MySQL DATE_ADD .
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd(new Date(), 'minute', 30) //returns 30 minutes from now.
* https://stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd(date, interval, units) {
if(!(date instanceof Date))
return undefined;
var ret = new Date(date); //don't change original date
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break;
case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break;
case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break;
case 'week' : ret.setDate(ret.getDate() + 7*units); break;
case 'day' : ret.setDate(ret.getDate() + units); break;
case 'hour' : ret.setTime(ret.getTime() + units*3600000); break;
case 'minute' : ret.setTime(ret.getTime() + units*60000); break;
case 'second' : ret.setTime(ret.getTime() + units*1000); break;
default : ret = undefined; break;
}
return ret;
}
Рабочая демонстрация jsFiddle .
Один день в году длится всего 23 часа, а один день в году длится 25 часов. Например, в большинстве Соединенных Штатов и Канады через 24 часа после полуночи 2 ноября 2014 года все еще остается 2 ноября:const NOV = 10; //because JS months are off by one...
addMinutes(new Date(2014, NOV, 2), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!
Вот почему использование одной из вышеупомянутых библиотек является более безопасным вариантом , если вам нужно проделать с этим много работы.
Ниже представлена более общая версия этой функции, которую я написал. Я по-прежнему рекомендую использовать библиотеку, но это может быть излишним / невозможным для вашего проекта. Синтаксис моделируется на основе функции MySQL DATE_ADD .
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd(new Date(), 'minute', 30) //returns 30 minutes from now.
* https://stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd(date, interval, units) {
if(!(date instanceof Date))
return undefined;
var ret = new Date(date); //don't change original date
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break;
case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break;
case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break;
case 'week' : ret.setDate(ret.getDate() + 7*units); break;
case 'day' : ret.setDate(ret.getDate() + units); break;
case 'hour' : ret.setTime(ret.getTime() + units*3600000); break;
case 'minute' : ret.setTime(ret.getTime() + units*60000); break;
case 'second' : ret.setTime(ret.getTime() + units*1000); break;
default : ret = undefined; break;
}
return ret;
}
Рабочая демонстрация jsFiddle .
const NOV = 10; //because JS months are off by one...
addMinutes(new Date(2014, NOV, 2), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!
Вот почему использование одной из вышеупомянутых библиотек является более безопасным вариантом , если вам приходится много работать с этим.
Ниже представлена более общая версия этой функции, которую я написал. Я все равно рекомендую использовать библиотеку, но это может быть излишним / невозможным для вашего проекта. Синтаксис моделируется на основе функции MySQL DATE_ADD .
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd(new Date(), 'minute', 30) //returns 30 minutes from now.
* https://stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd(date, interval, units) {
if(!(date instanceof Date))
return undefined;
var ret = new Date(date); //don't change original date
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break;
case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break;
case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break;
case 'week' : ret.setDate(ret.getDate() + 7*units); break;
case 'day' : ret.setDate(ret.getDate() + units); break;
case 'hour' : ret.setTime(ret.getTime() + units*3600000); break;
case 'minute' : ret.setTime(ret.getTime() + units*60000); break;
case 'second' : ret.setTime(ret.getTime() + units*1000); break;
default : ret = undefined; break;
}
return ret;
}
Рабочая демонстрация jsFiddle .
const NOV = 10; //because JS months are off by one...
addMinutes(new Date(2014, NOV, 2), 60*24); //In USA, prints 11pm on Nov 2, not 12am Nov 3!
Вот почему использование одной из вышеупомянутых библиотек является более безопасным вариантом , если вам приходится много работать с этим.
Ниже представлена более общая версия этой функции, которую я написал. Я все равно рекомендую использовать библиотеку, но это может быть излишним / невозможным для вашего проекта. Синтаксис моделируется на основе функции MySQL DATE_ADD .
/**
* Adds time to a date. Modelled after MySQL DATE_ADD function.
* Example: dateAdd(new Date(), 'minute', 30) //returns 30 minutes from now.
* https://stackoverflow.com/a/1214753/18511
*
* @param date Date to start with
* @param interval One of: year, quarter, month, week, day, hour, minute, second
* @param units Number of units of the given interval to add.
*/
function dateAdd(date, interval, units) {
if(!(date instanceof Date))
return undefined;
var ret = new Date(date); //don't change original date
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break;
case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break;
case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break;
case 'week' : ret.setDate(ret.getDate() + 7*units); break;
case 'day' : ret.setDate(ret.getDate() + units); break;
case 'hour' : ret.setTime(ret.getTime() + units*3600000); break;
case 'minute' : ret.setTime(ret.getTime() + units*60000); break;
case 'second' : ret.setTime(ret.getTime() + units*1000); break;
default : ret = undefined; break;
}
return ret;
}
Еще один вариант, который я написал:
Это излишне, если это вся обработка даты, которая вам нужна, но она будет делать то, что вы хотите.
Поддерживает форматирование даты / времени, математику даты (добавление / вычитание частей даты), сравнение даты, синтаксический анализ даты и т. Д. Он имеет открытый исходный код.
var now = new Date(); now.setMinutes(now.getMinutes() + 30); // временная метка now = new Date(now); // объект Date console.log(now);