Конвертировать дату RFC 822 в действительную дату для JavaScript - PullRequest
0 голосов
/ 12 сентября 2011

Я использую календарь сценариев, который, когда я выбираю дату, преобразует ее в новый формат (гггг-мм-дд)

Это работает в большинстве браузеров, но в Firefox и Opera я получаю недопустимый формат даты, потому что я работаю с RFC 822.

Я ищу способ конвертировать этот формат даты

пример:

Thu Sep 08 2011 12:00:00 GMT-0400 (EDT)

и измените его на

2011-09-08

Может ли это быть сделано в JavaScript?

UPDATE

Вот мой код, пытающийся заменить (EDT) на ничто

$(".taskDate").datepick({
          onSelect: function(selectedDate){
            selectedDate = selectedDate.replace(/ \(.+\)/, '');
            //alert(selectedDate);
            var newDate = new Date(selectedDate);
            $(".selectedDate").text(newDate.getFullYear()+'-'+(newDate.getMonth()+1)+'-'+newDate.getDate());
            location.href="index.php?date="+newDate.getFullYear()+'-'+(newDate.getMonth()+1)+'-'+newDate.getDate();
          }
        });

Теперь я получаю ошибку

selectedDate.replace is not a function

Как получилось?

ОБНОВЛЕНИЕ 2

Исправлено, потому что кажется, что это был объект, а не проклятая строка. Добавлено

selectedDate = selectedDate.toString();

до новой даты ();

Теперь это работает для всех браузеров ...

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Работает в Firefox6, см. Мой jsfiddle .

var sOriginalDate = 'Thu Sep 08 2011 12:00:00 GMT-0400 (EDT)';
var oDate = new Date(sOriginalDate);
var iMonth = oDate.getMonth() + 1;
var iDay = oDate.getDate();
var sNewDate = oDate.getFullYear() + '-'
    + (iMonth < 10 ? '0' : '') + iMonth + '-'
    + (iDay < 10 ? '0' : '') + iDay;
alert(sNewDate);
1 голос
/ 01 августа 2012

Так как дата RFC 822, вы можете проанализировать ее на действительную дату (конечный EDT не влияет на результат):

var dateAsDateObject = new Date(Date.parse(dateInRFC822Format));

Это будет работать с dateInRFC822Format, равным либо "Thu Sep 08 2011 12:00:00 GMT-0400 (EDT)"или "Thu Sep 08 2011 12:00:00 GMT-0400"

Теперь вы можете получить необходимую информацию от dateAsDateObject:

  • год: dateAsDateObject.getFullYear()
  • месяц: dateAsDateObject.getMonth()
  • день: dateAsDateObject.getDay()

Примечание: для форматирования, если вы не возражаете против использования jqueryui, вы также можете использовать метод $.datepicker.formatDate().Например var stringRepresentation = $.datepicker.formatDate('yy-mm-dd', dateAsDateObject);

0 голосов
/ 12 сентября 2011

Попробуйте:

var mydate = new Date(originaldate);
mydate = mydate.getYear() + '-' + (mydate.getMonth() + 1) + '-' + mydate.getDate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...