8

特定の日付に移動するまでの日数を取得したいので、今日の日付で特定の日付を検出しようとしています。しかし、これが機能していないのは私のコードです 日付が来月27日の場合、残りの日数を取得するにはどうすればよいですか

    var date2=new Date();
    var date1=27/5/2012;
    var diff = date1.getDate()-date2.getDate();
    var date_reaming = diff.getDate();
    document.write(date_reaming + 'days to go');
4

6 に答える 6

16

あなたのコード

date1=27/5/2012

実際には、27 割る 5 割る 2012 を意味します。

date1 = 0.0026838966202783303

date1 は数値になり、この数値にはgetDateメソッドがありません。

代わりに実際の日付オブジェクトとして宣言した場合

var date2 = new Date(2012, 3, 19);
var date1 = new Date(2012, 4, 27);

あなたは実行できるでしょう

var diff = date1 - date2;

これにより、2 つの日付のミリ秒単位の差が得られます。

ここから、次のように日数を計算できます。

var days = diff / 1000 / 60 / 60 / 24;
于 2012-04-19T09:34:06.783 に答える
8
function getDateDiff(date1, date2, interval) {
    var second = 1000,
    minute = second * 60,
    hour = minute * 60,
    day = hour * 24,
    week = day * 7;
    date1 = new Date(date1).getTime();
    date2 = (date2 == 'now') ? new Date().getTime() : new Date(date2).getTime();
    var timediff = date2 - date1;
    if (isNaN(timediff)) return NaN;
    switch (interval) {
    case "years":
        return date2.getFullYear() - date1.getFullYear();
    case "months":
        return ((date2.getFullYear() * 12 + date2.getMonth()) - (date1.getFullYear() * 12 + date1.getMonth()));
    case "weeks":
        return Math.floor(timediff / week);
    case "days":
        return Math.floor(timediff / day);
    case "hours":
        return Math.floor(timediff / hour);
    case "minutes":
        return Math.floor(timediff / minute);
    case "seconds":
        return Math.floor(timediff / second);
    default:
        return undefined;
    }
}

console.log(getDateDiff('19/04/2012', '27/5/2012', 'days'));
于 2012-04-19T09:34:27.573 に答える
4

jQuery には日付管理機能が組み込まれていません。試してみてください: http://momentjs.com/

于 2012-04-19T09:32:33.350 に答える
3

これが答えです、私はここからこれを見つけました 私のjs-fiddleはここにあります

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();/* Returns the month (from 0-11) */
var curr_month_plus= curr_month+1; /* because if the month is  4 it will show output 3 so we have to add +1 with month*/ 
var curr_year = d.getFullYear();
function dstrToUTC(ds) {
    var dsarr = ds.split("/");
     var mm = parseInt(dsarr[0],10);
     var dd = parseInt(dsarr[1],10);
     var yy = parseInt(dsarr[2],10);
     return Date.UTC(yy,mm-1,dd,0,0,0); }
    function datediff(ds1,ds2) {
     var d1 = dstrToUTC(ds1);
     var d2 = dstrToUTC(ds2);
     var oneday = 86400000;
     return (d2-d1) / oneday;    }
    var a =curr_month_plus+ '/' + curr_date + '/' + curr_year;
    var b;   
    b = "5/26/2012";
    document.write(+datediff(a,b)+" day(s)<br>");
于 2012-04-19T10:46:15.547 に答える
3

私はあなたがそれを引くことができると思います:

var date2 = new Date(2012, 3, 19); // 1st argument = year, 2nd = month - 1 (because getMonth() return 0-11 not 1-12), 3rd = date
var date1 = new Date(2012, 4, 27);
var distance = date1.getTime() - date2.getTime();
distance = Math.ceil(distance / 1000 / 60 / 60 / 24); // convert milliseconds to days. ceil to round up.
document.write(distance);
于 2012-04-19T09:37:17.647 に答える
2

jQueryが何のために作られているかを理解してください。

jQuery は、高速で簡潔な JavaScript ライブラリであり、HTML ドキュメントのトラバースイベント処理アニメーション化、およびAjax の相互作用を簡素化し、迅速な Web 開発を実現します。

基本的なJavacriptを使用したい、またはJuan G. Hurtadoがmomentjsのような別のライブラリを述べているように。

于 2012-04-19T09:35:43.053 に答える