Добавление одного дня в Javascript date + уникальное форматирование?
Я унаследовал проект для компании, над которой я работаю. Их даты записываются в следующем формате:
18 марта 2011 года будет указан как "18 марта 2011 года".
31 апреля 2010 года будет указан как "31 апреля 2010 года".
Как я могу использовать Javascript, чтобы добавить один день к дате, отформатированной выше, а затем переконвертировать ее обратно в тот же формат?
Я хочу создать функцию, которая добавляет один день в "18 марта 2011" и возвращает "19 марта 2011 года". Или добавляет 1 день к "30 июня 2011 года" и возвращает "1 июля 2011 года".
Может ли кто-нибудь помочь мне?
Ответы
Ответ 1
Прежде всего, нет 31-го апреля;)
В актуальную проблему объект даты может понять текущий формат при передаче в качестве аргумента.
var dateString = '30 Apr 2010'; // date string
var actualDate = new Date(dateString); // convert to actual date
var newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+1); // create new increased date
// now extract the bits we want to crete the text version of the new date..
var newDateString = ('0'+newDate.getDate()).substr(-2) + ' ' + newDate.toDateString().substr(4,3) + ' ' + newDate.getFullYear();
alert(newDateString);
demo at http://jsfiddle.net/gaby/jGwYY/1/
То же извлечение с использованием (лучше поддерживается) slice
вместо substr
// now extract the bits we want to crete the text version of the new date..
var newDateString = ('0'+newDate.getDate()).slice(-2) + ' ' + newDate.toDateString().slice(4,7) + ' ' + newDate.getFullYear();
Демо на http://jsfiddle.net/jGwYY/259/
Ответ 2
Вы хотите преобразовать строку даты в объект Date, добавить один день к объекту и затем преобразовать обратно. Пожалуйста, ознакомьтесь с документами API для Date в качестве отправной точки.
Ответ 3
Большинство (всех?) браузеров смогут анализировать эту строку даты с помощью простого
var parsedDate = new Date(dateString);
Как только у вас есть объект Date, вы можете добавить день и вывести форматированную строку даты, используя что-то вроде underscore.date.
Если вы обнаружите, что некоторые браузеры не могут разобрать этот формат даты, вы можете написать довольно простое регулярное выражение, которое вытащит строку даты в ее составные части, а затем создаст экземпляр Date вручную.
Также я бы настоятельно рекомендовал разбор синтаксиса в отдельной функции и попытаться сохранить даты в представлении даты как можно больше. Разберите строку в дату, как только сможете, и отформатируйте ее обратно в строку как можно позже.