1

Datjsを使用してユーザーから日付を取得し、データベースに保存するのに適した形式に変換しています。月、日、年の日付を指定すると、必要な日付、つまり年-月-日でフォーマットされた日付が取得されます。

    var d1 = Date.parse('02/22/1984');
    console.log(d1.toString('yyyy-MM-dd')); //Prints '1984-02-22'

ただし、1年だけを与えると、同じ年に戻り、今日の月と日が続きます。

    var d1 = Date.parse('1984');
    console.log(d1.toString('yyyy-MM-dd')); //Prints '1984-12-19'

ユーザーが1年だけを入力したときに、その年だけが次の形式で返されるようにするにはどうすればよいですか。

    1984-00-00

同様に、月と年だけが指定されている場合は、次のようにフォーマットします。

    1984-02-00
4

1 に答える 1

3

DatejsはJavaScriptDateオブジェクトを返します。このオブジェクトは、ある時点を表すことを目的としており、ある時点には必ず月と日が含まれます。指定しない場合、Datejsはこれらの値を現在の月と日にデフォルト設定します。その情報を表示したくない場合は、フォーマットパターンを変更してください。

var d1 = Date.parse('1984');
console.log(d1.toString('yyyy')); // prints 1984

ユーザーが最初に入力した内容に基づいてパターンを変更する必要がある場合は、後で何を印刷するかがわかるように、その情報を保存する必要があります。

簡単な例は次のとおりです。

function DatePrinter(input) {
    var s = input.split("/").length;
    this.fmt = ["dd", "MM", "yyyy"].slice(3 - s).reverse().join("-");
    this.date = Date.parse(input);
}

DatePrinter.prototype.toString = function() {
    return (this.date.toString(this.fmt) + "-00-00").slice(0, 10);
}

いくつかのテスト:

new DatePrinter("02/22/1984").toString() // "1984-02-22"
new DatePrinter("02/1984").toString() // "1984-02-00"
new DatePrinter("1984").toString() // "1984-00-00"
于 2011-12-19T20:09:46.360 に答える