0

有没有更好的方法来格式化用户推算的日期。我有一个输入字段,单击日历时会弹出一个输入字段,您可以选择一个日期,但用户也可以选择输入日期。我希望用户能够输入 1/12 和我的 javascript 以将其格式化为 2012 年 1 月 12 日。有没有一种简单的方法来解决这个问题而不必进行所有类型的检查?如果不是,最好的方法是什么?

4

3 回答 3

3

这个库可以帮助你:http ://www.datejs.com/

dd/mm/yyyy 是一种有效的格式,例如在西班牙、英国、...

于 2012-06-21T17:26:56.773 回答
3

我刚刚试了一下,但不确定它是否正确,但我认为它正在工作(月/日/年)。

$('input[name="txt_date"]').on('blur', function(e){
    var dt=$(this).val();
    if(dt!='')
    {
        if(dt.indexOf('/'))
        {
            var da=dt.split('/');
            var l=da.length;
            if(l <= 3)
            {
                var date='';
                for(i=0;i<l;i++)
                {
                   if(i==0)
                   {
                      if(da[i].match(/^\d{1}|d{2}$/) && da[i]>0 && da[i]<=12)
                      {
                          var m=da[i].length==1 ? '0'+da[i] : da[i];
                          date=m;
                      }
                   }
                   if(i==1)
                   {
                       if(da[i].match(/^\d{1}|d{2}$/) && da[i]>0 && da[i]<=31)
                       {
                           var d=da[i].length==1 ? '0'+da[i] : da[i];
                           date+='/'+d;
                       }
                   }
                   if(i==2)
                   {
                       if(da[i].match(/^\d{4}$/))
                       {
                           date+='/'+da[i];
                       }
                       else date+='/'+new Date().getFullYear();
                   }
                }
                if(l<3)
                {
                    date+='/'+new Date().getFullYear();
                }
                if(date.match(/^\d{2}\/\d{2}\/\d{4}$/))
                {
                    $(this).val(date);
                }
                else alert('invalid date!');
            }
        }
    }
});

演示。

于 2012-06-21T18:46:04.727 回答
1

这就是我想出的。

var checkDate = function(dateVal, input){

            if(dateVal.length == 10){
                return;
            }
            var d = new Date();
            var currentMonth = d.getMonth();
            var year = d.getFullYear();
            var firstIndex = dateVal.indexOf('/');
            var month = parseInt(dateVal.substr(0, firstIndex));
            var day = parseInt(dateVal.substr(firstIndex + 1, 2));

            if(month < 10){
                month = '0' + month;
            }

            if(day < 10){
                day = '0' + day;
            }

            if(month > currentMonth){
                year = year - 1;
            }

            dateVal = month + '/' + day + '/' + year;

            if(isNaN(month)){
                input.val('');
                return;
            }
            input.val(dateVal);

        };
于 2012-06-21T19:59:01.857 回答