2016-03-16 17 views
1

У меня есть дата в этом формате как переменная: Friday, August 5th 2016, 09:00 и ее нужно преобразовать в этот формат 2016,8,5,09,00,0,0,0 для моего файла календаря. Есть ли простой способ сделать это с помощью jQuery? Я пробовал:Преобразование определенного формата даты в формат календаря

var oldDate = "Friday, August 5th 2016, 09:00"; 
var newDate = new Date(yyyy,mm,dd,HH,mm,0,0,0); 

Это не помогло. Я очень ценю ваше время, чтобы разобрать это для меня.

+0

Вам нужно сделать формат даты в строке матча один из форматов, который принимает JS 'Date()' объекта см [эту страницу] (https: // разработчик. mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse#Description) на MDN для получения дополнительной информации. Это будет зависеть от того, как вы создаете строку даты. –

+1

Откуда эта дата исходит в первую очередь? – putvande

+0

Он поступает с сервера как часть json string @putvande – qqruza

ответ

5

Прежде всего, ваш формат даты неверен. th отбрасывает javascript, когда пытается его проанализировать. Возможно, вам стоит подумать об изменении формата, который будет сохранен на сервере. Для этой демонстрации я только что написал регулярное выражение, чтобы разобрать его. После этого довольно легко получить его в нужном формате.

var oldDate = new Date("Friday, August 5th 2016, 09:00".replace(/(\d)+(st|nd|rd|th)/g, '$1')); 
 
var newDate = [ 
 
    oldDate.getFullYear(), 
 
    oldDate.getMonth() + 1, 
 
    oldDate.getDate(), 
 
    ('0' + oldDate.getHours()).slice(-2), 
 
    ('0' + oldDate.getMinutes()).slice(-2), 
 
    0, 
 
    0, 
 
    0 
 
]; 
 
var formattedDate = newDate.join(','); 
 
document.write(formattedDate);

+0

хороший, одна вещь, которую вам не хватает здесь, я верю, т. Е. Если час, мин и сек имеют 2-значное число, тогда это будет 020 или 059! – ameenulla0007

+0

@ ameenulla0007 '.slice (-2)' работает справа направо и возвращает только первые два символа. В сочетании с конкатенацией '0' он форматирует' 9' как '09' и' 23' как '23'. –

+0

О, это здорово! я знал, что использование «среза», подумал, что если вход «029», это будет «02». :) все-таки хороший, но спасибо за информацию. – ameenulla0007

Смежные вопросы