2015-08-26 4 views
1

Я использую форму, из которой пользователь может выбрать дату и время из набора даты и времени в формате dd-mm-yyyy hh:mm:ss. Теперь я хочу преобразовать формат в формат yyyy-mm-dd hh:mm:ss для хранения в таблице mysql.Преобразование формата даты в узле js

Я попытался с моментом JS как этот

console.log(moment(status.date).format('MM/DD/YYYY')); 

, где status.date я отправлю из формы, когда пользователь выбирает DateTime из DateTimePicker.

Пожалуйста, помогите

+0

Почему преобразовать в строку? Просто дайте 'node-mysql' объект' Date' в подготовленном операторе. – Amadan

+0

Ознакомьтесь с форматами http://momentjs.com/docs/#/displaying/format/ –

+0

@amadan, бэкэнд уже построен в php-кодеригенере, теперь мы ждем api в nodejs. Поэтому мы хотим конвертировать в стандартный формат mysql. –

ответ

2

Вы можете сделать, как это вместо того, чтобы некоторые модули.

var fd = status.date; 
var fromDate = fd.split(" "); 
console.log(formatDate(fromDate[0],fromDate[1] + " " + fromDate[2]));// 

и добавьте эти функции там.

function formatDate(date, time2) { 
    var from = date.split("-"); 
    var f = from[2] + "-" + from[1] + "-" + from[0]; 
    var time1 = time(time2); 

    return f + " " + time1; 
} 

function time(time) { 
    var hours = Number(time.match(/^(\d+)/)[1]); 
    var minutes = Number(time.match(/:(\d+)/)[1]); 
    var AMPM = time.match(/\s(.*)$/)[1]; 
    if ((AMPM == "PM" || AMPM == "pm") && hours < 12) 
     hours = hours + 12; 
    if ((AMPM == "AM" || AMPM == "am") && hours == 12) 
     hours = hours - 12; 
    var sHours = hours.toString(); 
    if (hours < 10) 
     sHours = "0" + sHours; 
    if (minutes < 10) 
     sMinutes = "0" + sMinutes; 
    return (sHours + ":" + sMinutes); 

}

+0

Это сработало для меня. Спасибо –

+0

Но, есть ли встроенный метод, чтобы сделать это вместо написания кода самостоятельно? –

0

конвертировать его в ISOString первый, а затем устранить нежелательные вещи replace методом.

var date = new Date(); 
date.toISOString().replace(/T/, " ").replace(/\..+/,'') 

source: chbrown's answer

+0

Не уверен, что подойдет. Он возвращает время как UTC. Кажется, что OP хочет местных, хотя и не указано явно. Я, кажется, помню, что не все реализации возвращают десятичные секунды, но не уверены в этом (и могут не быть проблемой с node.js). – RobG

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