Кто-нибудь знает простой способ взять дату (например, сегодня) и вернуться на X дней?
Так, например, если я хочу вычислить дату за 5 дней до сегодняшнего дня.
javascript
date
datetime
jonhobbs
источник
источник
Ответы:
Попробуйте что-то вроде этого:
Обратите внимание, что это изменяет объект даты и возвращает значение времени обновленной даты.
источник
new Date(new Date().setDate(new Date().getDate()-5))
- это будет 5 дней назад. В примере ответа передайте его новой дате, чтобы получить объект даты. Такnew Date(d)
что вы хотите.setDate(-1)
установит дату последнего дня месяцаtoString
методов Date, напримерtoISOString
,toDateString
и т. Д.Если вы выполняете множество непростых манипуляций с датами в своем веб-приложении, DateJS сделает вашу жизнь намного проще:
http://simonwillison.net/2007/Dec/3/datejs/
источник
getTime()
иsetTime()
миллисекунды с эпохи. Это не должно иметь значения, если время пересекает границу года.Это выглядит примерно так:
источник
function getDaysAgo(b){var a=new Date;a.setDate(a.getDate()-b);return a};
тогда простоvar daysAgo45 = getDaysAgo(45);
Я заметил, что getDays + X не работает за пределами дня / месяца. Использование getTime работает до тех пор, пока ваша дата не раньше 1970 года.
источник
получить момент.js. Все крутые дети используют это. У него больше опций форматирования и т. Д. Где
Необязательный! Конвертировать в JS Date obj для угловой привязки.
Необязательный! Формат
источник
Я сделал этот прототип для Date, чтобы можно было передавать отрицательные значения для вычитания дней и положительные значения для добавления дней.
Итак, чтобы использовать его, я могу просто написать:
источник
d.setDate(d.getDate() + days)
как положительные, так и отрицательные значения для дней, чтобы добавлять и вычитать дни соответственно. И он должен работать с экземпляром (как это делают другие методы Date), а не создавать и возвращать копию.Некоторые из существующих решений были близки, но не совсем то, что я хотел. Эта функция работает с положительными или отрицательными значениями и обрабатывает граничные случаи.
источник
Мне нравится делать математику в миллисекундах. Так что используйте
Date.now()
и если вам нравится это отформатировано
ПРИМЕЧАНИЕ:
Date.now()
не работает в старых браузерах (например, IE8, я думаю). Полифилл здесь .ОБНОВЛЕНИЕ Июнь 2015
@socketpair указал на мою небрежность. Как он / она говорит: «У некоторых дней в году есть 23 часа, а у некоторых 25 из-за правил часового пояса».
Если говорить более подробно, приведенный выше ответ будет содержать неточности перехода на летнее время в том случае, если вы хотите рассчитать МЕСТНЫЙ день 5 дней назад в часовом поясе с изменениями для перехода на летнее время, и вы
Date.now()
дает вам текущее локальное время, или.toString()
которое возвращает локальную дату и, следовательно, несовместимо сDate.now()
базовой датой в UTC.Тем не менее, это работает, если вы все делаете математику в UTC, например
A. Вы хотите дату UTC 5 дней назад от СЕЙЧАС (UTC)
Б. Вы начинаете с базовой даты UTC, отличной от «сейчас», используя
Date.UTC()
источник
Я нахожу проблему с методом getDate () / setDate () в том, что он слишком легко превращает все в миллисекунды, и мне иногда сложно следовать синтаксису.
Вместо этого мне нравится отрабатывать тот факт, что 1 день = 86 400 000 миллисекунд.
Итак, для вашего конкретного вопроса:
Работает как шарм.
Я все время использую этот метод для расчета 30/60/365 дней.
Вы можете легко экстраполировать это, чтобы создать единицы времени для месяцев, лет и т. Д.
источник
разбить вашу дату на части, а затем вернуть новую дату с установленными значениями
Помните, что месяцы начинаются с нуля, а дни - нет. т.е. новая дата (2009, 1, 1) == 01 февраля 2009 года, новая дата (2009, 1, 0) == 31 января 2009 года;
источник
Не используя вторую переменную, вы можете заменить 7 for на x дней:
источник
источник
Я создал функцию для манипулирования датами. Вы можете добавить или вычесть любое количество дней, часов, минут.
Теперь вызовите эту функцию, передав параметры. Например, вот вызов функции для получения даты до 3 дней с сегодняшнего дня.
источник
источник
Лучшие ответы привели к ошибке в моем коде, когда в первом месяце он установил будущую дату в текущем месяце. Вот что я сделал,
источник
Простой способ управлять датами - использовать Moment.js
Вы можете использовать
add
. примерДокументы http://momentjs.com/docs/#/manipulation/add/
источник
Мне нравится следующее, потому что это одна строка. Не идеально подходит для изменений DST, но обычно достаточно для моих нужд.
источник
для меня все комбинации работали нормально с приведенным ниже фрагментом кода, фрагмент для реализации Angular-2, если вам нужно добавить дни, передайте положительное число дней, если вам нужно вычесть передать отрицательное число дней
источник
Я получаю хороший пробег от даты.js:
http://www.datejs.com/
Ницца!
Сайт включает в себя эту красоту:
источник
Если вы хотите вычесть количество дней и отформатировать дату в удобочитаемом формате, вам следует рассмотреть возможность создания пользовательского
DateHelper
объекта, который выглядит примерно так:(см. также эту скрипку )
источник
Посмотрите следующий код, вычтите дни из текущей даты. Также установите месяц в соответствии с вычтенной датой.
источник
При установке даты она конвертируется в миллисекунды, поэтому вам необходимо преобразовать ее обратно в дату:
Этот метод также принимает во внимание, изменение нового года и т. Д.
источник
Вы можете использовать Javascript.
Для PHP,
Надеюсь, это поможет вам.
источник
Я пересчитал в миллисекунды и вычтенные дни иначе месяц и год не изменится и логично
Надежда помогает
источник
источник
Использование современного синтаксиса функции JavaScript
источник
Попробуйте что-то вроде этого
currDate может быть любой датой
предел может быть разницей в количестве дней (положительный для будущего и отрицательный для прошлого)
источник
Это даст вам результат в последние 10 дней. Работая на 110%, вы не получите никаких проблем.
Вы можете изменить дни вычитания в соответствии с вашими требованиями
источник
источник
источник