更改日期时 - 我得到“2”而不是“02”

时间:2013-02-18 18:52:28

标签: jquery

I built a slider where you can pick a data and slide a slider. 问题是,当我从datepicker中选择“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);
}

谢谢!

2 个答案:

答案 0 :(得分: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以与上面几行相同的方式修复它。

答案 1 :(得分:0)

假设dayWhenDateUnformatted[1],例如等于"01"

  1. 您正在使用dayparseInt从字符串转换为数字,即"01"1
  2. 然后您将1添加到day,即12
  3. 最后,您要将day转换为字符串,即2"2"
  4. 最后,您将使用与最初格式不同的格式连接数字。如果您在步骤3稍微修改转换,则可以保留格式,如下所示。

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

    See a live example here.