Добавление одного дня к дате Javascript + уникальное форматирование? - PullRequest
11 голосов
/ 21 июня 2011

Я унаследовал проект для компании, в которой я работаю.Их даты записываются в следующем формате:

18 марта 2011 года будет указано как «18 марта 2011 года».

31 апреля 2010 года будет указано как «31 апреля 2010 года».

Как мне использовать Javascript, чтобы добавить один день к дате, отформатированной указанным выше способом, а затем преобразовать ее обратно в тот же формат?

Я хочу создать функцию, которая добавляет один день к "18 марта 2011 "и возвращается" 19 марта 2011 ".Или добавляет 1 день к «30 июня 2011» и возвращает «1 июля 2011».

Кто-нибудь может мне помочь?

Ответы [ 3 ]

22 голосов
/ 21 июня 2011

Прежде всего, нет 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в 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/

1 голос
/ 21 июня 2011

Вы хотите преобразовать строку даты в объект Date, добавить один день к объекту и затем выполнить обратное преобразование. Пожалуйста, ознакомьтесь с документацией по API для Дата в качестве отправной точки.

0 голосов
/ 21 июня 2011

Большинство (всех?) Браузеров смогут анализировать эту строку даты с помощью простого

var parsedDate = new Date(dateString);

Получив объект Date, вы можете добавить день и вывести отформатированную строку даты, используя что-то вроде underscore.date .

Если вы обнаружите, что некоторые браузеры не могут разобрать этот формат даты, вы можете написать довольно простое регулярное выражение, которое разделит строку даты на составные части, изатем создайте экземпляр Date вручную.

Также я бы настоятельно рекомендовал выполнить синтаксический анализ в отдельной функции и как можно больше стараться сохранять даты в представлении даты.Разобрать строку в дату как можно скорее и отформатировать обратно в строку как можно позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...