0

javascriptのdateオブジェクトを使用して現在の日付を変換すると、日付形式が1月5日、2月12日などとして返されます。私はこのようなことをしました

            var curr = new Date(),
            curr_year = curr.getFullYear(),
            curr_month = curr.getMonth(),
            curr_day = curr.getDay(),
            today = new Date(curr_year, curr_month, curr_day, 0, 0, 0, 0);
            console.log(today);

ここで、今日は無効な日付として返されます。カテゴリに基づいて月と日付のみを比較するために、ゼロとして分秒とミリ秒を含めないタイムスタンプを作成する必要がありました。動的に日付を作成してそれらを比較する方法はありますか?指定された形式の日付。また、dateオブジェクトを使用して日付文字列を変換しようとすると、年が2001として返されます。現在の年に基づいて日付を比較するにはどうすればよいですか。たとえば、phpでは、mktimeを使用して、指定された日付形式から動的に日付を作成し、それらの結果を比較しました。どんな提案も役に立ちます。ありがとう。

4

4 に答える 4

1

ネイティブのJS日付機能を利用して、タイムスタンプの人間が読める日付文字列を取得できます。

var today = new Date();
console.log( today.toDateString() ); // Outputs "Mon Feb 04 2013"

日付比較も組み込まれています。

var yesterday = new Date();
yesterday.setDate( yesterday.getDate() - 1);
console.log( yesterday.toDateString() ); // Outputs "Sun Feb 03 2013"
console.log( yesterday < today ); //Outputs true

他の組み込みメソッドを使用して、この比較を分/秒の影響を受けないように微調整したり、すべてを0に設定したりできます。

于 2013-02-04T11:19:15.113 に答える
0

これに変更:

        var curr = new Date(),
        curr_year = curr.getFullYear(),
        curr_month = curr.getMonth()+1,
        curr_day = curr.getDay(),
        today = curr_month+'/'+curr_day+'/'+curr_year;
        console.log(today);

(getMonth()+1 は、1 月が 0 であるためです)

変更 :

           today = curr_month+'/'+curr_day+'/'+curr_year;

好きなフォーマットに。

于 2013-02-04T11:21:20.593 に答える
0

PHPでmktime()を使っているとおっしゃっていましたが、これはどうですか

于 2013-02-04T11:21:02.343 に答える
0

日付をタイムスタンプに変換する方法を見つけました @nbrooks 実装として試しましたが、.toDateStringには日付比較が組み込まれており、演算子<および>ではDate.parse();機能しますが、==演算子では機能しません。ここに行きます..

 var curr = new Date(),
 curr_year = curr.getFullYear(),
 curr_month = curr.getMonth(),
 curr_day = curr.getDate(),
 today = new Date(curr_year, curr_month, curr_day, 0,0,0,0);
 var dob = new Date('dob with month and date only'+curr_year);
 if(Date.parse(dob) == Date.parse(today)){
        //Birthdays....
        }

このメソッドを使用して、動的に作成された日付のタイムスタンプを作成できます。ご提案ありがとうございます。

于 2013-02-07T07:35:00.290 に答える