This JavaScript program shows how to read or set the value of a date input form element.
<!DOCTYPE html> <html> <head> <title>XoaX.net's Javascript</title> <script type="text/javascript" src="ReadOrSetADateInput.js"></script> </head> <body> <label for="TheDateInput">Read: <input id="idDateInput" type="date" name="TheDateInput" onchange="DateChanged()" /></label> <div>Read String: <span id="idRead"></span></div> <div>Year: <span id="idYear"></span></div> <div>Month: <span id="idMonth"></span></div> <div>Date: <span id="idDate"></span></div> <div>Full Date: <span id="idFullDate"></span></div> <div>Full Date: <span id="idFullDateUTC"></span></div> <label for="TheDTheSetDateInputateInput">Set: <input id="idSetDateInput" type="date" name="TheSetDateInput" /></label> </body> </html>
function DateChanged() { const kqThis = window.event.currentTarget; var sValue = kqThis.value; // The difference in milliseconds since 1970 in UTC. The extra string ensures that this UTC, but it probably isn't necessary. var iDifferenceInMilliseconds = Date.parse(sValue+'T00:00:00.000Z'); // This is just used to get the local offset var qCurrentDate = new Date(); var iTimezoneOffset = qCurrentDate.getTimezoneOffset(); // This conversion to correct with timezone should work, but it seems probablematic because of Daylight Savings Time /* // Add the offset in minutes = minutes*60*1000 milliseconds to get the correct date // Alternatively, we could just get the year, month and date in UTC: qDate.getUTCDate() instead of qDate.getDate() var qDate = new Date(iDifferenceInMilliseconds+qCurrentDate.getTimezoneOffset()*60000); document.getElementById("idYear").innerHTML = qDate.getFullYear(); // Month are zero offset. So, the range is 0-11. We add one to make it 1-12 document.getElementById("idMonth").innerHTML = qDate.getMonth() + 1; document.getElementById("idDate").innerHTML = qDate.getDate(); */ document.getElementById("idRead").innerHTML = sValue; // This, however, does work var qDate = new Date(iDifferenceInMilliseconds); document.getElementById("idYear").innerHTML = qDate.getUTCFullYear(); // Month are zero offset. So, the range is 0-11. We add one to make it 1-12 document.getElementById("idMonth").innerHTML = qDate.getUTCMonth() + 1; document.getElementById("idDate").innerHTML = qDate.getUTCDate(); document.getElementById("idFullDate").innerHTML = qDate.toString(); document.getElementById("idFullDateUTC").innerHTML = qDate.toUTCString(); // Set the date of the other date input document.getElementById("idSetDateInput").value = qDate.getUTCFullYear() + '-' + ('0' + (qDate.getUTCMonth() + 1)).slice(-2) + '-' + ('0' + qDate.getUTCDate()).slice(-2); }
© 20072025 XoaX.net LLC. All rights reserved.