You can make it shorter:
<input type="datetime-local" id="cal"> function toLocaleIsoStringtoLocalISOString(date) { const localDate = new Date(date - date.getTimezoneOffset() * 60000); //offset in milliseconds. Credit https://stackoverflow.com/questions/10830357/javascript-toisostring-ignores-timezone-offset // Optionally remove second/millisecond if needed localDate.setSeconds(null); localDate.setMilliseconds(null); return localDate.toISOString().slice(0, -1); } window.addEventListener("load", () => { document.getElementById("cal").value = toLocaleIsoStringtoLocalISOString(new Date()); });