Как разобрать время начала события по методу fullcalendar event.start? - PullRequest
0 голосов
/ 27 ноября 2011

Здравствуйте. Я использую плагин fullcalendar jQuery для создания приложения календаря.Когда я вызываю метод start для объекта события, формат даты, который я получаю, выглядит следующим образом:

ФОРМАТ ISO:

Вс 27 ноября 2011 06:30:00 GMT + 0200 (EET)

Теперь я хочу сохранить только время и минуты события:

6 часов

30 минут

в нашем примере.

Как я могу обрезать / проанализировать только время с помощью JavaScript?

Ответы [ 4 ]

3 голосов
/ 27 ноября 2011

Вы можете использовать Date.parse:

var your_date = "Sun Nov 27 2011 06:30:00 GMT+0200 (EET)";
var t = Date.parse(your_date); // date in milliseconds since January 1, 1970
var d = new Date(t);
d.getHours(); // 6 hours
d.getMinutes(); // 30 minutes

Взгляните на http://www.w3schools.com/jsref/jsref_obj_date.asp, чтобы узнать больше о датах JavaScript.

1 голос
/ 27 ноября 2011

Я не сильно увлекаюсь jQuery (я стараюсь избегать этого), поэтому я предполагаю, что они поступили правильно и сохранили экземпляр Date. Если это так, вы видите только (локализованное) строковое представление этого Date экземпляра (как если бы вы вызвали его toString() метод), и вы можете извлечь компоненты, используя методы его прототипа :

var d = jQuery(…).whatever(…);
var hours = d.getHours();
var minutes = d.getMinutes();

или

var hours = d.getUTCHours();
var minutes = d.getUTCMinutes();

в зависимости от того, что вас интересует. Анализ не требуется.

1 голос
/ 27 ноября 2011

Ответ немного сложен, потому что вы можете просто использовать строку в конструкторе javascript Date() следующим образом:

var d = new Date("Sun Nov 27 2011 06:30:00 GMT+0200 (EET)");

Но выполнение вызова d.getHours(), вероятно, не приведет кзначение, которое вы хотели получить, потому что JavaScript преобразует дату в ваш местный часовой пояс.Например, если вы сделаете для меня alert(d) в Германии, вы получите:

Sun Nov 27 2011 05:30:00 GMT+0100 (CET)

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

1 голос
/ 27 ноября 2011

Вы можете использовать Date.parse, но при использовании с new Date вы получите объект Date в текущем часовом поясе , поэтому с разными значениями часов на разных компьютерах.

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

/ (\d+):/

, что означает:

  1. пробел
  2. одна или несколько цифр
  3. двоеточие

Для минут это нечто похожее, но они окружены двоеточием с обеих сторон:

/:(\d+):/

Затем вы можете разобрать числа с помощью .exec(str)[1], где 1 - группа 1, определенная с помощью паренов.

Преобразование в число можно выполнить с помощью +str:

var str     = "Sun Nov 27 2011 06:30:00 GMT+0200 (EET)",
    hours   = +/ (\d+):/.exec(str)[1]; // 6
    minutes = +/:(\d+):/.exec(str)[1]; // 30
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...