Javascript Преобразование даты IETF в формат ISO8601 - PullRequest
0 голосов
/ 24 марта 2011

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

http://arshaw.com/fullcalendar/

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 24 марта 2011

Из тонкой инструкции :

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

Акцент мой.

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

1 голос
/ 25 марта 2011

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

0 голосов
/ 26 октября 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 '';
}
0 голосов
/ 10 апреля 2011

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

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

полные документы для formatDate

...