首页 文章

将dd-mm-yyyy字符串转换为日期

提问于
浏览
151

我正在尝试使用以下格式将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格式的日期 . 当我执行以下操作时,我得到"Invalid Date":

alert(f);

这是因为' - '符号吗?我怎么能克服这个?

12 回答

  • 2

    Split on "-"

    将字符串解析为您需要的部分:

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

    Use regex

    var date = new Date("15-05-2018".replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))
    

    Why not use regex?

    因为你知道你将要处理由三个部分组成的字符串,用连字符分隔 .

    但是,如果您在另一个字符串中查找相同的字符串,则可以使用正则表达式 .

    Reuse

    因为您在示例代码中多次执行此操作,并且可能在代码库中的其他位置执行此操作,所以将其包装在函数中:

    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")
    

    Modern JavaScript

    如果你能够使用更现代的JS,阵列解构也是一个不错的选择:

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

    正则表达式示例:

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

    另一种可能性

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

    匹配数字并重新排序

  • 127

    使用moment.js示例:

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

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

  • 3

    您还可以在 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)
    
  • 1

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

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

    getDateFromFormat(val,format);
    

    另见:Parse DateTime string in JavaScript

  • 0

    在我的情况下

    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()来工作毫秒

  • 2

    看看所有那些小日期相关问题的Datejs ..您也可以通过parseDate函数来解决这个问题

  • 13

    你可以使用正则表达式 .

    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)
        );
    }
    
  • 5
    new Date().toLocaleDateString();
    

    就这么简单,只需将你的日期传递给js Date Object

相关问题