JavaScript日期差异 - 一小时太多了

Mir*_*rco 2 javascript html5 date

我对JavaScript很陌生,但我遇到了一个问题.我有一个HTMl5-Page,有2个类型的输入元素time.我希望两次得到区别,所以11:15和12:00会给我0:45.

我认为HTML非常简单:

<ul>
    <li>
        <label>Anfang: </label>
    </li>
    <li>
        <input type="time" id="begin" required="true">
    </li>
</ul>

<ul>
    <li>
        <label>Ende: </label>
    </li>
    <li>
        <input type="time" id="end" required="true"></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我猜这里没什么特别的.在我的JavaScript中,我将一个监听器附加到一个按钮,该按钮获取这两个字段的值并将其传递给以下函数以创建日期对象:

function timeToDate(input) {
    var hours = input.substring(0, 2);
    var min = input.substring(3, 5);

    var date = new Date();
    date.setHours(hours);
    date.setMinutes(min);
    return date;

}
Run Code Online (Sandbox Code Playgroud)

为了得到差异,我做:

var beginDate = timeToDate(begin);
var endDate = timeToDate(end);
var diff = endDate.getTime() - beginDate.getTime();
var b = new Date();
b.setTime(diff);
console.log(b.getHours());
Run Code Online (Sandbox Code Playgroud)

所以,但是11:00(beginDate)和12:00(endDate)的控制台输出是2,但它应该是1,或者我不知道这里的线索?

Den*_*ret 5

setTime()需要几毫秒UTC.

getHours()另一方面,打印当地时区的小时数.

您看到的"一小时太多",当您打印时getHours(),您的时间偏离UTC.

你可以使用所需的小时getUTCHours().

我假设您仅使用此算法来计算hours:minutes小的正日期差异的表示.那很好.只是不要试图将其应用于更大的持续时间计算.