2 exports.ISO8601_FORMAT = "yyyy-MM-dd hh:mm:ss.SSS";
3 exports.ISO8601_WITH_TZ_OFFSET_FORMAT = "yyyy-MM-ddThh:mm:ssO";
4 exports.DATETIME_FORMAT = "dd MM yyyy hh:mm:ss.SSS";
5 exports.ABSOLUTETIME_FORMAT = "hh:mm:ss.SSS";
7 function padWithZeros(vNumber, width) {
8 var numAsString = vNumber + "";
9 while (numAsString.length < width) {
10 numAsString = "0" + numAsString;
15 function addZero(vNumber) {
16 return padWithZeros(vNumber, 2);
20 * Formats the TimeOffest
21 * Thanks to http://www.svendtofte.com/code/date_format/
24 function offset(timezoneOffset) {
25 // Difference to Greenwich time (GMT) in hours
26 var os = Math.abs(timezoneOffset);
27 var h = String(Math.floor(os/60));
28 var m = String(os%60);
35 return timezoneOffset < 0 ? "+"+h+m : "-"+h+m;
38 exports.asString = function(/*format,*/ date, timezoneOffset) {
40 var format = exports.ISO8601_FORMAT;
41 if (typeof(date) === "string") {
42 format = arguments[0];
44 timezoneOffset = arguments[2];
46 // make the date independent of the system timezone by working with UTC
47 if (timezoneOffset === undefined) {
48 timezoneOffset = date.getTimezoneOffset();
50 date.setUTCMinutes(date.getUTCMinutes() - timezoneOffset);
51 var vDay = addZero(date.getUTCDate());
52 var vMonth = addZero(date.getUTCMonth()+1);
53 var vYearLong = addZero(date.getUTCFullYear());
54 var vYearShort = addZero(date.getUTCFullYear().toString().substring(2,4));
55 var vYear = (format.indexOf("yyyy") > -1 ? vYearLong : vYearShort);
56 var vHour = addZero(date.getUTCHours());
57 var vMinute = addZero(date.getUTCMinutes());
58 var vSecond = addZero(date.getUTCSeconds());
59 var vMillisecond = padWithZeros(date.getUTCMilliseconds(), 3);
60 var vTimeZone = offset(timezoneOffset);
61 date.setUTCMinutes(date.getUTCMinutes() + timezoneOffset);
62 var formatted = format
64 .replace(/MM/g, vMonth)
65 .replace(/y{1,4}/g, vYear)
66 .replace(/hh/g, vHour)
67 .replace(/mm/g, vMinute)
68 .replace(/ss/g, vSecond)
69 .replace(/SSS/g, vMillisecond)
70 .replace(/O/g, vTimeZone);