Декораторы
Декораторы позволяют обертывать функцию или метод в другой функции, которая может добавить функциональность, изменить аргументы или результаты, и т.д. Вы пишете декораторам одну строку выше функционального определения, начиная "в" знаке.
Пример показывает print_args
декоратор, который печатает аргументы украшенной функции прежде, чем назвать его:
>>> def print_args(function):
>>> def wrapper(*args, **kwargs):
>>> print 'Arguments:', args, kwargs
>>> return function(*args, **kwargs)
>>> return wrapper
>>> @print_args
>>> def write(text):
>>> print text
>>> write('foo')
Arguments: ('foo',) {}
foo
Simply:
yourDate.setDate(yourDate.getDate() - daysToSubtract);
Here's an example, however this does no kind of checking (for example if you use it on 2009/7/1 it'll use a negative day or throw an error.
function subDate(o, days) {
// keep in mind, months in javascript are 0-11
return new Date(o.getFullYear(), o.getMonth(), o.getDate() - days);;
}
This is what I would do. Note you can simplify the expression, I've just written it out to make it clear you are multiplying the number of days by the number of milliseconds in a day.
var newDate = new Date( yourDate.getTime() - (days * 24 * 60 * 60 * 1000) );
Еще один вариант, о котором я писал:
Вероятно, это излишне, если ВСЕ, что вы хотите сделать, это одно вычисление, но если вы собираетесь делать больше манипуляций с датой, вы можете найти его полезным. 122] Поддерживает форматирование даты / времени, математику даты (добавление / вычитание частей даты), сравнение даты, синтаксический анализ даты и т. Д.