From: Michael Prager Date: Mon, 16 May 2011 13:48:29 +0000 (+0200) Subject: fixed date handling for devices which return real Date objects instead of a string... X-Git-Url: https://code.delx.au/comingnext/commitdiff_plain/595e14da48ccf9881bc8c209ab1b3e6296ed87c1 fixed date handling for devices which return real Date objects instead of a string for calendar events --- diff --git a/comingNext/index.html b/comingNext/index.html index 0480c43..d688c8b 100644 --- a/comingNext/index.html +++ b/comingNext/index.html @@ -272,7 +272,7 @@ function collectLocales() var dateArr = []; while (list && (entry = list.getNext()) != undefined) { - dateArr = entry.StartTime.replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' '); + dateArr = (entry.StartTime + '').replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' '); var day = dateArr[1]; var month = dateArr[2]; var year = dateArr[3]; @@ -383,49 +383,58 @@ function parseDate(dateString) Wednesday, 2009 August, 28 8.00.00 pm Wednesday, 2009 August, 28 08:00:00 PM */ + var result = null; - if (dateString == "" || dateString == null) - return null; - var dateArr = dateString.replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' '); - if (dateArr.length != 5 && dateArr.length != 6) - return null; - - // parse date - var weekDay = dateArr[0]; - var day = dateArr[1]; - var month = dateArr[2]; - var year = dateArr[3]; - // make sure month is set properly - if (isNaN(parseInt(day))) { - var tmp = day; - day = month; - month = tmp; - } else if (isNaN(parseInt(year))) { - var tmp = year; - year = month; - month = tmp; + if (dateString == "" || dateString == null || dateString == undefined) + return result; + if (dateString instanceof Date) { + // we already have a date object, no need to parse string here + result = dateString; } - // make sure day and year are set properly - if (Number(day) > Number(year)) { - var tmp = year; - year = day; - day = tmp; + else { + var dateArr = (dateString + '').replace(/,/g, '').replace(/\./g, ':').replace(/ /g, ' ').split(' '); + if (dateArr.length != 5 && dateArr.length != 6) + return null; + + // parse date + var weekDay = dateArr[0]; + var day = dateArr[1]; + var month = dateArr[2]; + var year = dateArr[3]; + // make sure month is set properly + if (isNaN(parseInt(day))) { + var tmp = day; + day = month; + month = tmp; + } + else + if (isNaN(parseInt(year))) { + var tmp = year; + year = month; + month = tmp; + } + // make sure day and year are set properly + if (Number(day) > Number(year)) { + var tmp = year; + year = day; + day = tmp; + } + month = months_translated[month]; + + // parse time + var timeArr = dateArr[4].split(':'); + if (timeArr.length != 3) + return null; + var hours = Number(timeArr[0]); + var minutes = Number(timeArr[1]); + var seconds = Number(timeArr[2]); + if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'pm' && hours < 12) + hours += 12; + if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'am' && hours == 12) + hours = 0; + + result = new Date(year, month - 1, day, hours, minutes, seconds); } - month = months_translated[month]; - - // parse time - var timeArr = dateArr[4].split(':'); - if (timeArr.length != 3) - return null; - var hours = Number(timeArr[0]); - var minutes = Number(timeArr[1]); - var seconds = Number(timeArr[2]); - if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'pm' && hours < 12) - hours += 12; - if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'am' && hours == 12) - hours = 0; - - var result = new Date(year, month - 1, day, hours, minutes, seconds); // take care of daylight saving time if (config['enableDaylightSaving'].Value) { @@ -460,6 +469,13 @@ function formatDate(date, format) if (config['showTodayAsText'].Value && isTomorrow(date)) return '' + config['tomorrowText'].Value + ''; + if (format instanceof Date) { + // we don't know how to format this + if (config['dateFormat'].Value == 'auto' || config['dateFormat'].Value == 'DDMM') + return day + config['dateSeparator'].Value + month; + else + return month + config['dateSeparator'].Value + day; + } var dateArr = format.replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' '); if (dateArr.length != 5 && dateArr.length != 6) { // we don't know how to format this