5

2 桁の日付を 4 桁の日付として正しくフォーマットできません。

テキスト入力フィールドがあります:

<input type="text" value="" class="date"/>

そして、ユーザーが日付を入力した後、「mm/dd/yyyy」形式でフォーマットしたいと思います。だから私は onChange イベントを持っています:

$('.date').on('change',function(){
    var date = new Date($(this).val());
    $(this).val((date.getMonth()+1)+'/'+date.getDate()+'/'+date.getFullYear());
});

さて、奇妙な点があります (日付の例として 12/12/12 を使用します)。

1) getFullYear() はすべての IE、FF で 1912 を返します。Chrome は 2012 年を返します。

2) getYear() は、IE、Chrome で 112 を返します。FF は 12 を返します。

したがって、この時点での唯一のオプションは、ユーザー エージェントをスニッフィングし、それに応じて使用することです。とにかくUAをスニッフィングすることはありますか?

4

4 に答える 4

1

まず、入力の部分を分離することを試みることができます

...
var input=$(this).val();
var month=input.substr(0,2)-1;
var day=input.substr(3,2);
var year=parseInt("20"+ input.substr(6,2));

次に、新しいDateオブジェクトを開始します。

var date= new Date(year,month,day);

または、次のようにフィールドに書き戻します。

$(this).val((date.getMonth()+1)+'/'+date.getDate()+'/'+date.getFullYear());
于 2013-01-31T16:45:16.163 に答える
0

いろいろ聞いてみた結果、 Moment.jsを使うことになりました。私はdate.jsを試しましたが、部分的にUNIXタイムスタンプを扱っているため、モーメントはこれらをより適切に処理しているように見えました(IMO)。

于 2013-01-31T19:35:49.120 に答える