NOTE: This was written back in 2007 discussing code written even earlier. This code is different than Date.toISOString() in at least two major respects:
- It prints local time instead of UTC time.
- It uses "+00:00" instead of "Z" (Zulu time) for UTC.
A couple of years ago I had to print dates in JavaScript in UTC (ISO-8601) format (yyyy-MM-ddTHH:mm:ss.fff[+-]ZZ:ZZ). Here is the function that I developed. It assumes the date object has the correct time zone offset and uses the time zone offset from the object.
I also developed server-side C# code for formatting dates in ASP.NET pages which I'll post soon.
function pad(value, digits, padtext) { if (!padtext) padtext = "00000000"; if ((digits == null) || (typeof(digits) == "undefined")) return value; if ((value == null) || (typeof(value) == "undefined")) return value; var length = value.toString().length; if ((length < digits) && (digits < padtext.length)) return padtext.substr(0, digits - length) + value.toString(); else return value; } function toUTCDateTime(date) { var tz = date.getTimezoneOffset(); var offset = ((tz <= 0) ? "+" : "-"); tz = Math.abs(tz); offset += pad(Math.floor(tz / 60), 2) + ":" + pad(tz % 60, 2); var result = date.getFullYear() + "-" + pad(date.getMonth() + 1, 2) + "-" + pad(date.getDate(), 2) + "T" + pad(date.getHours(), 2) + ":" + pad(date.getMinutes(), 2) + ":" + pad(date.getSeconds(), 2) + "." + pad(date.getMilliseconds(), 3) + offset; return result; }
Comments are closed.