0

我构建了一个滑块,您可以在其中选择数据并滑动滑块。 问题是,当我从日期选择器中选择“2013-02-01”并将滑块移动到凌晨 1 点时,我得到的是“2013-02-2”而不是“2013-02-02”。

这是我的代码:

$("#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

比方说dayis WhenDateUnformatted[1]which,例如,等于"01"

  1. 您正在day使用从字符串转换为数字parseInt,即从"01"1
  2. 然后添加1to day,即 from 1to 2
  3. 最后,您将转换day为字符串,即 from2"2".

最后,您连接的数字格式与最初的格式不同。如果您在步骤 3 中稍微修改转换,则可以保留格式,如下所示。

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

在这里查看一个活生生的例子。

于 2013-02-18T19:02:23.410 回答