2014-12-03 1 views
0

Я читаю дату из текстового поля с помощью javascript и пытаюсь преобразовать его в объект Date. Но моя проблема - это дата конвертирования, так как месяц и месяц преобразуются как дату преобразования строки на дату.Чтение даты из текстового поля в виде строки и преобразование ее в форму Date

Пример: 03/12/2014 значение в текстовом поле

Фактический выход: 03 в марте, 12 как дата (его неправильно)

Ожидаемый результат: 03 как дата 12 в декабре (я ожидал)

при преобразовании этой строки на сегодняшний день, используя следующий фрагмент

var startTime = document.getElementById("meeting:startTime"); 
date.js 
var stringToDate_startTime=new Date(Date.parse(startTime.value,"dd/mm/yy")); 
moment.js 
var date1=moment(startTime.value).format('DD-MM-YYYY'); 

В приведенном выше примере я даже использовал файлы date.js и moment.js. Но они также не решили мою проблему. Пожалуйста, кто-нибудь может мне помочь, чтобы избавиться от этого.

ответ

0

Try ...

var from = startTime.value.split("/"); 
var newDate = newDate(from[2], from[1] - 1, from[0]); 

... предполагая, что время включен ...

var date_only = startTime.value.split(""); 
var from = date_only[0].split("/"); 
var newDate = newDate(from[2], from[1] - 1, from[0]); 
+0

мое текстовое поле также содержит время. Это мое значение текстового поля «03/12/2012 23:05» – user3663712

+0

Скорректировано для размещения введенного времени. Время может быть доступно в date_only [1] ... – rfornal

0

Я не осведомлен о реализации метода Date.parse(), который принимает два аргумента , Вы можете просмотреть описание метода Mozilla Date.parse() здесь Date.parse() - JavaScript | MDN.

Это может быть стоит посмотреть на вопрос/ответ на этот вопрос для более определенной информации: Why does Date.parse give incorrect results?

Следующий лучший вариант был бы разделить дату с помощью String.split() и переставить части даты

var dateStr = '03/12/2014 23:05'; 
var newDateStr = null; 
var dateParts = dateStr.split('/'); 
if (dateParts.length == 3) { 
    var day = dateParts[0]; 
    var month = dateParts[1]; 
    var yearAndTime = dateParts[2]; 

    // Rearrange the month and day and rejoin the date "12/03/2014 23:05" 
    newDateStr = [ month, day, yearAndTime].join('/'); 
} else { 
    throw new Error('Date not in the expected format.'); 
} 

var date = new Date(newDateStr); // JS Engine will parse the string automagically 

alert(date); 

Это не самое элегантное решение, но, надеюсь, это поможет.

+0

Предполагается, что вы создаете переменную с именем «dateStr». –

+0

Если я использую второй метод, я не смогу получить время. Мое текстовое поле также содержит время. – user3663712

+0

Это мое текстовое поле «03/12/2014 23:05» – user3663712