Return next localized date for countdown timer

后端 未结 1 1654
隐瞒了意图╮
隐瞒了意图╮ 2021-01-15 16:11

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

1条回答
  •  野的像风
    2021-01-15 16:28

    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

    0 讨论(0)
提交回复
热议问题