// diff holds the difference (in milliseconds) between the server time (i.e. the correct GMT time) // and the local PC time (i.e. the incorrect or foreign non GMT time) // From this we can work out the real time from the local clock // NOTE: Javascript months are 0 based, e.g. 0=jan, 1=feb, 2=mar etc. VB ones are more sensibly indexed... var diff=0; // getServerDate includes Daylight Savings if in DST function getServerDate(inTimeZone) { theLocalTime=new Date(); theAdjustedTime=new Date(theLocalTime.getTime() + diff + inTimeZone*3600000); return theAdjustedTime; } function getDaylightSavingsFlag() { // Are we in Daylight Savings time? // DS starts on 1st sunday in April (month 3 in JavaScript) dateNow=getServerDate(0); startDST=new Date(dateNow.getFullYear(),3,1); while (startDST.getDay() != 0) startDST.setDate(startDST.getDate()+1); // DS ends on last sunday in October (month 9 in JavaScript) endDST=new Date(dateNow.getFullYear(), 9, 31) ; while (endDST.getDay() != 0) endDST.setDate(endDST.getDate()-1); if (startDST < dateNow && dateNow < endDST) return 1; else return 0; } // getServerDateNoDS does not include Daylight Savings at any time of year function getServerDateNoDS(inTimeZone) { theServerDate=getServerDate(0); if (getDaylightSavingsFlag()) { // Knock the server time back an hour return new Date(theServerDate.getTime()-3600000); } else { return theServerDate; } } function getGMT() { return getServerDateNoDS(0); } function getCityDate(inCity) { city=inCity.toLowerCase(); if (city=="la" || city=="los angeles") return getServerDate(-8); if (city=="new york" || city=="nyc") return getServerDate(-5); if (city=="london" || city=="lisbon" || city=="norwich") return getServerDate(0); if (city=="barcelona" || city=="berlin" || city=="brussels" || city=="geneva" || city=="milan" || city=="oslo" || city=="paris") return getServerDate(1); if (city=="moscow") return getServerDate(3); } serverNow=new Date(2008,4,14,7,45,23,0); localNow=new Date(); // Work out difference between local time and server time diff=serverNow-localNow;