从文本框中读取日期作为字符串并将其转换为日期

时间:2014-12-03 17:51:48

标签: javascript date datepicker momentjs datejs

我正在使用javascript从文本框中读取日期并尝试将其转换为Date对象。但我的问题是日期转换为月份和月份转换为将字符串转换为日期的日期。

实施例: 03/12/2014文本框中的值

实际输出: 03年3月, 12作为日期(错误)

预期产出: 03日期 12月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文件。但那些也没有解决我的问题。请任何人帮助我摆脱这个。

2 个答案:

答案 0 :(得分:0)

尝试......

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]);

答案 1 :(得分:0)

我不知道接受两个参数的Date.parse()方法的实现。您可以在此处Date.parse() - JavaScript | MDN查看Mozilla Date.parse()方法说明。

有关更多信息,可能值得查看此问题的问题/答案: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);

这不是最优雅的解决方案,但希望这会有所帮助。