代码之家  ›  专栏  ›  技术社区  ›  ant

将dd.mm.yyyy格式转换为yy-mm-dd

  •  5
  • ant  · 技术社区  · 15 年前

    如何在javascript中将dd.mm.yyyy格式的日期转换为yy-mm-dd格式?

    下面是一个例子:

    30.01.2010
    to 
    2010-01-30
    

    意思是将d.m.y转换为y-m-d。我知道如何在PHP中实现这一点,但我需要在JavaScript中实现。

    4 回复  |  直到 8 年前
        1
  •  6
  •   Matthew Flaschen    15 年前

    Datejs 可以解析它。代码在 http://datejs.googlecode.com/files/date.js

    编辑:它是 safe to left date.js自动确定格式字符串。我犯了一个错误,没有用一天的时间来测试。您应该使用:

    Date.parseExact('09.01.2010', 'd.M.yyyy').toString('yyyy-MM-dd');
    

    Date.parseExact('09.01.2010', 'dd.MM.yyyy').toString('yyyy-MM-dd');
    

    取决于您是否要允许一位数的天数。

        2
  •  16
  •   ashrewdmint    15 年前

    你可以很简单地做到这一点。只需将欧洲日期分割成一个数组,反转它,然后用破折号连接它。

    var euro_date = '30.01.2010';
    euro_date = euro_date.split('.');
    var us_date = euro_date.reverse().join('-');
    
        3
  •  7
  •   Tatu Ulmanen    15 年前

    如果你只需要这么做的话,datejs有点臃肿。你可以使用 split() 并连接结果:

    var eu_date = '30.01.2010';
    var parts = eu_date.split('.');
    var us_date = parts[2]+'-'+parts[1]+'-'+parts[0];
    

    对于这些不需要日期逻辑的转换,使用字符串操作工具通常是最明智的。

        4
  •  1
  •   Malte Buttjer    8 年前
        function stringToDate( value ) {
          var isEuro = value.match( /^\d{1,2}\.\d{1,2}\.\d{4}$/ )
          var isIso = value.match( /^\d{4}-\d{1,2}-\d{1,2}$/ )
    
          if ( isEuro ) {
            value = value.split('.')
            value = [value[2],value[1],value[0]].join('-') //.reverse() isn't working in IEdge
            isIso = true
          }
    
          if ( isEuro || isIso ) {
            var date = new Date( value )
          }
    
          if ( isNaN( date.getTime() ) || !isIso ) {
             return false
          }
    
    
          return date
        }
    
        stringToDate('30.01.2000') //Sun Jan 30 2000 00:00:00 GMT+0100 (CET)
        stringToDate('30.1.2000') //Sun Jan 30 2000 01:00:00 GMT+0100 (CET)
        stringToDate('2000-01-30') //Sun Jan 30 2000 01:00:00 GMT+0100 (CET)
        stringToDate('2000-1-30') //Sun Jan 30 2000 01:00:00 GMT+0100 (CET)