将dd-mm-yyyystring转换为date

我试图将格式dd-mm-yyyy中的string转换为JavaScript中的date对象使用以下内容:

var from = $("#datepicker").val(); var to = $("#datepickertwo").val(); var f = new Date(from); var t = new Date(to); 

("#datepicker").val()包含格式为dd-mm-yyyy的date。 当我做到以下,我得到“无效date”:

 alert(f); 

这是因为' – '符号吗? 我怎样才能克服呢?

将stringparsing为您需要的部分:

 var from = $("#datepicker").val().split("-"); var f = new Date(from[2], from[1] - 1, from[0]); 

为什么不使用正则expression式?

因为你知道你将会使用由连字符分隔的三部分组成的string。

但是,如果你正在寻找另一个string中的相同的string,正则expression式将是要走的路。

重用

因为你不止一次地在你的示例代码中,也可能在你的代码库中的其他地方,把它包装在一个函数中:

 function toDate(dateStr) { var parts = dateStr.split("-"); return new Date(parts[2], parts[1] - 1, parts[0]); } 

用作:

 var from = $("#datepicker").val(); var to = $("#datepickertwo").val(); var f = toDate(from); var t = toDate(to); 

或者,如果你不介意你的函数中的jQuery:

 function toDate(selector) { var from = $(selector).val().split("-"); return new Date(from[2], from[1] - 1, from[0]); } 

用作:

 var f = toDate("#datepicker"); var t = toDate("#datepickertwo"); 

现代JavaScript

如果你能够使用更现代的JS,arrays解构也是一个很好的接触:

 function toDate(dateStr) { const [day, month, year] = dateStr.split("-") return new Date(year, month - 1, day) } 

正则expression式示例:

 new Date( "13-01-2011".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") ); 

另一种可能性

 var from = "10-11-2011"; var numbers = from.match(/\d+/g); var date = new Date(numbers[2], numbers[0]-1, numbers[1]); 

匹配数字并重新sorting

 var from = $("#datepicker").val(); var f = $.datepicker.parseDate("dmY", from); 

使用这种格式: myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00 myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00

您也可以在Date()对象的括号内写入date,如下所示:

 new Date("Month dd, yyyy hh:mm:ss") new Date("Month dd, yyyy") new Date(yyyy,mm,dd,hh,mm,ss) new Date(yyyy,mm,dd) new Date(milliseconds) 

您可以使用外部图书馆来帮助您。

http://www.mattkruse.com/javascript/date/source.html

 getDateFromFormat(val,format); 

另请参阅: 在JavaScript中parsingdate时间string

看看Datejs的所有这些相关的小问题。你也可以通过parseDate函数解决这个问题

在我的情况

 new Date("20151102034013".replace(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/, "$1-$2-$3T$4:$5:$6")) 

结果:Mon Nov 02 2015 04:40:13 GMT + 0100(CET)然后我使用.getTime()以毫秒

使用moment.js例子:

 var from = '11-04-2017' // OR $("#datepicker").val(); var milliseconds = moment(from, "DD-MM-YYYY").format('x'); var f = new Date(milliseconds) 

你可以使用正则expression式。

 var result = /^(\d{2})-(\d{2})-(\d{4})$/.exec($("#datepicker").val()); if (result) { from = new Date( parseInt(result[3], 10), parseInt(result[2], 10) - 1, parseInt(result[1], 10) ); } 
 new Date().toLocaleDateString(); 

就这么简单,只需将您的date传递给js Date对象