0

データを選択してスライダーをスライドできるスライダーを作成しました。 問題は、日付ピッカーから「2013-02-01」を選択し、スライダーを午前1時のようなものに移動すると、「2013-02-02」ではなく「2013-02-2」が表示されることです。

これが私のコードです:

$("#when").datepicker();


$("#open-till").slider({
    range: "min",
    value: 1230,
    min: 1200,
    max: 1860,
    step: 30,
    slide: slideTime
});
slideTime();

$("#SearchButton").click(function () {
    SendData();
});
function slideTime(event, ui) {
    var val0 = ui == undefined ? 1230 : ui.value,
        minutes0 = parseInt(val0 % 60, 10),
        hours0 = parseInt(val0 / 60 % 24, 10)
        startTime = getTime(hours0, minutes0);
    $("#time").text(startTime);
}

function getTime(hours, minutes) {
    minutes = minutes == 0 ? '00' : minutes + "";
    hours = hours + "";
    if (hours.length == 1) {
        hours = "0" + hours;
    }
    return hours + ":" + minutes;
}

function SendData() {
    var WhenDateUnformatted = $('#when').val().split('/');
    var startTimeSPLIT = startTime.split(':');


    var parsedWhenDateUnformatted = parseInt(WhenDateUnformatted[1], 10);
    if (startTimeSPLIT[0] < 20) {
        WhenDateUnformatted[1] = (parsedWhenDateUnformatted + 1).toString();
    }


    var WhenDate = WhenDateUnformatted[2] + '-' + WhenDateUnformatted[0] + '-' + WhenDateUnformatted[1] + ' ' + startTime + ':00';
    alert(WhenDate);
}

ありがとう!

4

2 に答える 2

1
var parsedWhenDateUnformatted = parseInt(WhenDateUnformatted[1], 10);
if (startTimeSPLIT[0] < 20) {
    WhenDateUnformatted[1] = (parsedWhenDateUnformatted + 1).toString();
    if (WhenDateUnformatted[1].length == 1) {
        WhenDateUnformatted[1] = "0" + WhenDateUnformatted[1];
    }
}

その値をint(先行ゼロがない)に強制し、それを操作してから、元に戻しました。逆方向に変換した後、必要に応じて先行ゼロを追加する必要があります。

内部ifは、上記の数行の時間と同じ方法でそれを修正します。

于 2013-02-18T19:02:14.400 に答える
0

たとえば、これは。に等しいとしdayましょう。WhenDateUnformatted[1]"01"

  1. dayを使用して文字列から数値に変換しています。parseIntつまり、"01"から1です。
  2. 次に、に追加1します。dayこれは1から2です。
  3. 最後にday、文字列に変換しています。つまり、2から"2"です。

最後に、最初とは異なる形式で数値を連結します。以下の手順3で変換を少し変更すれば、フォーマットを維持できます。

WhenDateUnformatted[1] = ("0" + (parsedWhenDateUnformatted + 1)).substring(0, 2);

こちらの実例をご覧ください。

于 2013-02-18T19:02:23.410 に答える