Javascript Преобразование даты IETF в формат ISO8601

Я использую этот замечательный плагин календаря jQuery.

http://arshaw.com/fullcalendar/

Одним из вариантов нажатия на дату является функция обратного вызова для возврата даты, на которую нажали.

http://arshaw.com/fullcalendar/docs/mouse/dayClick/

Я считаю, что он возвращает дату только в этом формате IETF - среда, 18 октября 2009 г., 13:00:00 EST.

Однако мне нужно, чтобы он был в формате ISO861 для публикации данных. В гугле что-то не могу найти по нему. Я пытаюсь преобразовать его в Javascript. Если нет, то преобразование может происходить в бэкенде Java. Помощь приветствуется


person Lucas    schedule 24.03.2011    source источник


Ответы (4)


Из прекрасного руководства:

date содержит объект Date для текущего дня.

Акцент мой.

Я предполагаю, что формат IETF, который вы видите, — это всего лишь строковая классификация объекта Date по умолчанию. Класс Date имеет методы getYear(), getMonth() и getDate(), поэтому вы можете легко создайте строку даты ISO-8601, если вы, конечно, будете осторожны с заполнением нулями.

person mu is too short    schedule 24.03.2011

Поскольку dayClick уже дает вам объект даты Javascript, вы можете отформатировать его как строку даты в формате 8601, используя эта функция с сайта Mozilla.

person Vik David    schedule 25.03.2011

он возвращает обычный объект даты javascript. вы можете использовать служебную функцию fullcalendar formatDate следующим образом:

$.fullCalendar.formatDate(date, 'u');

полная документация для formatDate

person arshaw    schedule 10.04.2011

вы можете использовать функцию formatDate, принадлежащую вашему объекту Date dayClick!

function getGMTOffset(localDate) {
    var positive = (localDate.getTimezoneOffset() > 0);
    var aoff = Math.abs(localDate.getTimezoneOffset());
    var hours = Math.floor(aoff / 60);
    var mins = aoff % 60;
    var offsetTz = padzero_(hours) + ':' + padzero_(mins);
    // getTimezoneOffset() method returns difference between (GMT) and local time, in minutes.
    // example, If your time zone is GMT+2, -120 will be returned.
    // This is why we are inverting sign
    if (!positive) {
      return '+' + offsetTz;
    }
    return '-' + offsetTz;
}

function pad2zeros(n) {
  if (n < 100) {
      n = '0' + n;
  }
  if (n < 10) {
      n = '0' + n;
  }
  return n;
}
function padzero(n) {
    return n < 10 ? '0' + n : n.toString();
}

function formatDate(date)  {
  if (date) {
    return (date.getFullYear()) +
           '-' + padzero((date.getMonth() + 1)) +
           '-' + padzero(date.getDate()) +
           'T' + padzero(date.getHours()) +
           ':' + padzero(date.getMinutes()) +
           ':' + padzero(date.getSeconds()) +
           '.' + pad2zeros(date.getMilliseconds()) +
           getGMTOffset(date);
  }
  return '';
}
person skyde    schedule 26.10.2011