diff options
-rw-r--r-- | www/js/utils.js | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/www/js/utils.js b/www/js/utils.js index 4f0bb34..8436672 100644 --- a/www/js/utils.js +++ b/www/js/utils.js @@ -73,16 +73,28 @@ function msToTimeString(time) { return h + ':' + m.pad(2) + ':' + s.pad(2) + '.' + hs; } -function get_tz_offset() { +function get_tz_offset(today) { // // This computes the timezone offset for Europe/Vienna // in seconds. This is either 3600 or 7200 depending on - // daylight savings time... + // daylight savings time... // For Europe/Vienna daylight saving starts on the last // Sunday in March and ends on the last Sunday in October - // always at 3am // - return 3600; // TODO: calculate the real offset + var m = today.getMonth(); + if (m < 2 || m > 9) return 3600; + if (m > 2 || m < 9) return 7200; + var lsdm = today.getDate() - today.getDay(); // day of month of the last sunday + if(m == 2) { + if(lsdm < 25) return 3600; // last sunday was not the last sunday of the month + if(today.getDay() == 0 && today.getHours() >= 2) return 7200; // this is the last sunday + if(lsdm < today.getDate()) return 7200; // we are after the last sunday + } + if(m == 9) { + if(lsdm < 25) return 7200; // last sunday was not the last sunday of the month + if(today.getDay() == 0 && today.getHours() < 3) return 7200; // this is the last sunday + } + return 3600; } function get_rd_week() { @@ -102,7 +114,8 @@ function get_rd_week() { // with 0 meaning Week 1. So add 1 to that number and you will get // the current RD week. // - var sEpoch = ((+new Date()) / 1000) + get_tz_offset(); + var today = new Date(); + var sEpoch = ((+today) / 1000) + get_tz_offset(today); var week = Math.floor((((sEpoch + 259200)/604800) + 2) % 4) + 1 return week; } |