2013-04-11 71 views
1

我需要将动态生成的日期从类似20-Apr-2013转换为20.04.13。到目前为止,我设法转换月份并更换分隔符。但转换一年仍然逃脱我。这是我迄今为止提出的。如何前进?使用Javascript将动态4位数年份转换为2位数年份

$(document).ready(function() { 


       $('.date').each(function() { 


    var oldDate = $(this).text(); 

    var month; 

    if(oldDate.indexOf('-') > 0){ 

     var dateSplit = oldDate.split('-'); 

     var year = dateSplit[2]; 

     if(year.length == 2){ 
      year = year; 
     } 

     switch(dateSplit[1]) 
     { 
      case 'Jan': month = "01"; 
      break; 
      case 'Feb': month = "02"; 
      break; 
      case 'Mar': month = "03"; 
      break; 
      case 'Apr': month = "04"; 
      break; 
      case 'May': month = "05"; 
      break; 
      case 'Jun': month = "06"; 
      break; 
      case 'Jul': month = "07"; 
      break; 
      case 'Aug': month = "08"; 
      break; 
      case 'Sep': month = "09"; 
      break; 
      case 'Oct': month = "10"; 
      break; 
      case 'Nov': month = "11"; 
      break; 
      case 'Dec': month = "12"; 
      break; 
     } 

     $(this).text(dateSplit[0] + '.' + month + '.' + year); 
    } 
    else if(oldDate.indexOf(('/') > 0)){ 

     var dateSplit = oldDate.split('/'); 

     var year = dateSplit[2]; 

     if(year.length == 2){ 
      year = year; 
     } 

    } 


    }); 

    }); 

回答

7

很简单的算术题:

year = year % 100; 

但为什么你想这样做吗?你不记得千年虫问题吗?

+0

你很清楚地知道程序员很少得到控制之类的日期格式。 – 2013-04-11 02:44:50

+0

客户要求。他的一些朋友告诉他,页面在没有20的情况下加载速度会更快。没有多少谈话在解释​​运行js来更改呈现器的格式 - 动态日期会减慢它的速度。 – 2013-04-11 11:55:07

+0

工作完美,谢谢。 – 2013-04-11 21:54:59

1

您可以尝试图书馆moment.js它是为了解决这个确切的问题。即使你不使用它,source code可能会提供一些指针。

您可以将oldDate转换为Date对象并从那里开始吗?

var newDate = new Date(oldDate); 
var month = newDate.getMonth(); 
var year = newDate.getFullYear().toString().substr(2, 2); //get the last 2 digits of the full year 

这里的functions on a javascript date object

1

你会是更好转换为Date第一个参考:

$('.date').each(function() { 

    var d = new Date($(this).text()); 

    $(this).text(d.getDate() + '.' + (d.getMonth() + 1) + '.' 
        + ('' + d.getFullYear()).substr(2, 2)); 

}); 
2
"20-Apr-2013".replace(/(\d+)-(\w+)-(\d+)/,function(p,p1,p2,p3) { 
    return p1+'.'+String("00"+('janfebmaraprmayjunjulaugsepoctnovdec'.indexOf(p2.toLowerCase())/3+1)).slice(-2)+'.'+p3.slice(-2); 
}); 
相关问题