1

我需要将动态生成的日期从 2013 年 4 月 20 日转换为 20.04.13。到目前为止,我设法转换了月份并更换了垫片。但是转换年份仍然使我无法理解。这是我到目前为止想出的。如何前进?

$(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;
        }

    }


    });

  });
4

4 回答 4

7

这是简单的算术:

year = year % 100;

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

于 2013-04-11T02:03:04.970 回答
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);
});
于 2013-04-11T02:25:28.670 回答
1

您可以尝试库moment.js,它旨在解决这个确切的问题。即使你不使用它,源代码也可能提供一些指针。

您可以将 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

这是javascript 日期对象上的函数的参考

于 2013-04-11T01:59:28.600 回答
1

您最好先将其转换为日期

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

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

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

});
于 2013-04-11T02:00:57.573 回答