4

date.js の Date.parseExact() で何か不足していますか? APIのドキュメントによると、私はこれを行うことができるはずです:

Date.parseExact("10/15/2004", ["M/d/yyyy", "MMMM d, yyyy"]); // The Date of 15-Oct-2004

つまり、「...期待される形式 {String} または日付文字列の期待される形式 {Array} の配列」を含む文字列配列を渡すことができるはずです。ただし、これを行うと:

var d = Date.parseExact($(this).val(), ["MMddyy", "Mddyyyy", "MM/dd/yy","MM/dd/yyyy"])

4 桁の年を含む日付 (つまり、MMddyyyy および MM/dd/yyyy 形式に一致) に対して null が返されます。何か不足していますか、それとも Date.js のバグですか?

コンテキストのために、コードの完全なブロックを次に示します。

$(function () {
     $('#FCSaleDate').change(function (e) {
         var d = Date.parseExact($(this).val(), ["MMddyy", "MMddyyyy", "MM/dd/yy","MM/dd/yyyy"])
         alert(d.toString("MM/dd/yyyy"));
     });

});
4

1 に答える 1

5

date.jsが4桁の年を2桁の年として解析しようとして失敗し、失敗するとnullを返しているようです。

これを防ぐには、マスクを切り替えて、最初に4桁のマスクを試します。

$(function () {
     $('#FCSaleDate').change(function (e) {
         var d = Date.parseExact($(this).val(),["MMddyyyy","MMddyy","M/d/yyyy","M/d/yy"]);
         alert(d.toString("MM/dd/yyyy"));
     });

});

http://jsfiddle.net/mblase75/ttEqh/1/

于 2011-12-19T21:26:03.463 に答える