Your date variable (const date = new Date();
) is defined only once when the app loads. When you make calls to date.getHours()
and equivalent, you're only translating that first snapshot into a new format. You're not taking a new snapshot of the current time to measure the differences.
In order to fix this, you should move the definition of date to each of the button function calls. This way, every time you click the button you're taking a new snapshot of the current time.
function startRecord() {
const date = new Date();
const start = date.getHours() + date.getMinutes() / 60 + date.getSeconds() / 60 / 60;
document.getElementById("1").innerHTML = start;
}
function endRecord() {
const date = new Date();
const end = date.getHours() + date.getMinutes() / 60 + date.getSeconds() / 60 / 60;
document.getElementById("2").innerHTML = end;
}
<p id="1">Show start time</p>
<p id="2">Show end time</p>
<button type="button" onclick="startRecord()">
start
</button>
<button type="button" onclick="endRecord()">
end
</button>
This being said, this is measuring the time on the current date/time. If what you're trying to do is to measure the time difference between two clicks, you should use performance.now() or an equivalent method.
This might be a better implementation:
function startRecord() {
const start = performance.now() / 1000;
document.getElementById("1").innerHTML = start;
}
function endRecord() {
const end = performance.now() / 1000;
document.getElementById("2").innerHTML = end;
}
<p id="1">Show start time</p>
<p id="2">Show end time</p>
<button type="button" onclick="startRecord()">
start
</button>
<button type="button" onclick="endRecord()">
end
</button>
These are taking the time with regards the "time origin". If you just want the difference between both, you would need to store start and substract from end.