function assembleDate() { var d = new Date(); d.setUTCFullYear(arguments[0]); // WTF, javascript! Zero-indexed month, really...? d.setUTCMonth((arguments[1] || 1) - 1); d.setUTCDate(arguments[2] || 1); d.setUTCHours(arguments[3] || 0); d.setUTCMinutes(arguments[4] || 0); d.setUTCSeconds(arguments[5] || 0); d.setUTCMilliseconds(arguments[6] || 0); return d; } // js> assembleDate(2005,5,5); // Wed May 04 2005 19:00:00 GMT-0500 (CDT) // js> var parts = [2005,5,5]; // js> var d = assembleDate.apply(null, parts); // js> d.toUTCString(); // Thu, 05 May 2005 00:00:00 GMT