I have this code that does a calculation to find the a localized UTC time. Based on that UTC time there\'s another function that will calculate a next event date and time fo
I'm wondering if there's a more optimize way to do this, particularly with the conditional statement and where I split apart the time into parameters.
Use a dispatch table to replace the conditional statement and a regexp to replace the range:
function foo(nextDate)
{
calcNextWebCast.nextDate.setDate(calcNextWebCast.nextDate.getDate() + (3 - 1 - nextDate.getDay() + 7) % 7 + 1);
calcNextWebCast.nextDate.setHours(20,0,0,0);
}
function bar(nextDate)
{
calcNextWebCast.nextDate.setDate(calcNextWebCast.nextDate.getDate() + (3 - 4 - nextDate.getDay() + 7) % 7 + 1);
calcNextWebCast.nextDate.setHours(12,0,0,0);
}
function calcNextWebCast(date) {
calcNextWebCast.nextDate = new Date(date||new Date()); // Next webcast datetime object
var localizedTime = new Date(date||new Date()); // localized datetime
var today = localizedTime.getDay() + '' + localizedTime.getHours(); // format localized datetime for comparison
var range = "012|[0][1][3-9]|[0][2-9][0-9]|[1-2][0-9][0-9]|[3][0-1][0-9]|320";
var datemap = { "true":foo, "false":bar }
var jump = RegExp(range).test(today);
var go = datemap[jump];
go();
return nextDate;
}
References
Custom Events in JavaScript
Matching Numeric Ranges with a Regular Expression