0

この場合、jQuery 日時ピッカーは使用したくありません。モバイルアプリを作っているからです。

[私の場合] JavaScript を使用して、今日の日付と次の数日間の値を取得しています。しかし、私はより柔軟になり、jqueryを使用してディループとコンボボックスにデータを表示したいと考えています。

今日まで、次を使用してデータを取得しています。

function GetDay(){
     var today = new Date();
     var dd = today.getDate();
     var mm = today.getMonth()+1; //January is 0!
     var yyyy = today.getFullYear();
     if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} today = yyyy+'-'+mm+'-'+dd;
     alert(today);
}

Result : 2013-04-28

そして私にとっては、次の日を使用して:

function NextDay1(){
    var today = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
    var dd = today.getDate();
    var mm = today.getMonth()+1; //January is 0!
    var yyyy = today.getFullYear();
    if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} next1 = yyyy+'-'+mm+'-'+dd;
    alert(next1);
}

Result : 2013-04-29

私が使用する方法は非常に手動であり、データを取得したい場合:

2013-04-28
2013-04-29
2013-04-30
2013-05-01
2013-05-02
ect...

私が使用する方法は非常に手動であり、このようなデータを取得して、その日付を選択するためのコンボボックスを配置したい場合は?

4

3 に答える 3

2

ここにあるのは、入力するための選択および匿名関数です。Date()はループの外にあるため、一度だけ作成されます。パディングは別の関数になりました。無名関数に渡される数値は、今日を含む日付の総数です。フィドル

HTML:

<form id="someform">
    <select id="year"></select>
</form>

JS:

//did you spot the mistake here ? :) 10 is not bigger than 10 and we end with 010
//function pad(v) { return v > 10 ? v : "0" + v; }

//the right way
function pad(v) { return v < 10 ? "0" + v : v; }
(function (max) {
    var counter = 0,
        d = new Date(),
        myselect = document.getElementById("year");
    do {
        d.setDate(d.getDate() + 1);
        myselect.add(
            new Option (
                d.getFullYear() + "-" +
                pad(d.getMonth() + 1) + "-" +
                pad(d.getDate()), 
                counter++),
            null
        );
    } while (counter < max);
})(5);
于 2013-04-28T12:38:57.427 に答える
1

これを試して-

var myDate = new Date();
var d = myDate.getFullYear() + '-' +  ('0' + (myDate.getMonth()+1)).slice(-2) + '-' + myDate.getDate();
var myDates = [d]; //initialize array with today's date already in it.

for (var i = 0; i < 5; i++) {        
    var fullDate = new Date(myDate.setDate(myDate.getDate() + 1)); //add 1 not i
    var twoDigitMonth = ('0' + (fullDate.getMonth() + 1)).slice(-2);
    var currentDate = fullDate.getFullYear() + "-" + twoDigitMonth + "-" + fullDate.getDate();
    myDates.push(currentDate);
}

console.log(myDates);

あなたが受け入れた答えの問題は、追加iが変更されることmyDateでありi、ループをインクリメントし続けるforため、毎回異なる値を日付に追加します。したがって、あなたは-

["2013-04-28", "2013-04-29", "2013-05-1", "2013-05-4", "2013-05-8"]

日付は毎回異なる値でインクリメントされます。

私のコードであなたは-

["2013-04-28", "2013-04-29", "2013-04-30", "2013-05-1", "2013-05-2", "2013-05-3"]
于 2013-04-28T13:11:18.217 に答える