我试图将格式为dd-mm-yyyy的字符串转换为JavaScript中的日期对象,使用以下方法:

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

("#datepicker").val()包含格式为dd-mm-yyyy的日期。 当我执行以下操作时,我得到“无效日期”:

alert(f);

这是因为“-”符号吗?我怎样才能克服这个问题呢?


当前回答

您可以使用外部库来帮助您。

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

getDateFromFormat(val,format);

还可以看到这个:用JavaScript解析DateTime字符串

其他回答

正则表达式示例:

new Date( "13-01-2011".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3") );
var from = $("#datepicker").val(); 
var f = $.datepicker.parseDate("d-m-Y", from);

看看Datejs中所有与日期相关的琐碎问题。你也可以用parseDate函数来解决这个问题

您可以使用Regexp。

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

另一种可能性:

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

匹配数字并重新排序