2015-01-15 12 views
1

Я получаю дату и время из 2 полей ввода с плагином даты.Преобразование даты в другой формат в javascript

У меня есть дата «16-01-2015» и время как «11:37 AM». Мне нужно отправить оба на мой сервер, чтобы добавить в базу данных, но моей базе данных нужна дата в формате: «2015-01-16 21:11:00»

Как конвертировать обе строки в дату или строка с другим форматом? Мне также нужно конвертировать 12-часовое время в 24 часа.

+1

Посмотрите в этой библиотеке: [http://momentjs.com/] (http://momentjs.com/) – Victor

+2

Возможный дубликат [Где я могу найти документацию по форматированию даты в JavaScript] (http://stackoverflow.com/questions/1056728/where-can-i-find-documentation-on -formatting-a-date-in-javascript) – Hacketo

+0

Я пробовал, но всегда получаю Date {Invalid Date} всякий раз, когда я пытаюсь напечатать момент (дата + "+ время) или просто дату или просто время – Biribu

ответ

3

Использование moment.js:

var dateInitial = "16-01-2015"; 
var timeInitial = "11:37 AM"; 

//Parse the date as String to Moment 
var dateAsMoment = moment(dateInitial + " " + timeInitial, 'DD-MM-YYYY HH:mm A'); 

//Parse the date as Moment to String in the desired format 
var dateToSend = dateAsMoment.format('YYYY-MM-DD HH:mm:ss') 

http://jsfiddle.net/vcarvalho/w240pfz6/2/

+0

Используя это, я получил недействительный Дата. – Biribu

+0

My bad:/Формат минут должен быть 'mm' вместо' MM'. Сейчас исправлено – Victor

+0

Теперь я вижу. Спасибо чувак. Я готовил парсер хахаха – Biribu

0

// Вы можете поменять местами цифры в дате и настроить часы по мере необходимости.

function parsedaytime(inputday, inputtime){ 
    var dstr= inputday.value.split('-').reverse().join('-'), 
    tstr= inputtime.value.split(/:| /), 
    ampm= tstr.pop(); 

    if(ampm== 'PM' && tstr[0]!== '12') tstr[0]-=-12; 
    return '"'+dstr+' '+tstr.join(':')+'"'; 
} 

вар inputday = {значение: "16-01-2015"}, inputtime = {значение: "11:37 вечера"}; parsedaytime (inputday, inputtime)

Возвращаемое значение: (String) "2015-01-16 23:37"