这是一个及时的问题。北美*关于时间更改的规则是:

  • 11月的第一个星期日,更改为Standard(-1小时)
  • 3月的第二个周日 ,将偏移量更改为“日光”(您与GMT的正常偏移量)

  • 考虑JavaScript中的一个带有Date参数的函数,该函数应确定该参数是Standard还是Daylight Saving。

    问题的根源是:
  • 您将如何构造下次更改的日期?

  • 当前的算法/伪代码如下所示:

    如果argDate ==“March”
    {

    var firstOfMonth = new Date();
    firstOfMonth.setFullYear(year,3,1);

    //星期几(0 =星期日,6 =星期六)
    var firstOfMonthDayOfWeek = firstOfMonth.getDay();

    var firstSunday;

    if(firstOfMonthDayOfWeek!= 0)//周日!
    {
    //需要找到一种方法来确定哪个日期是第二个星期日
    }

    }

    这里的约束是使用标准的JavaScript函数,而不是爬取任何JavaScript引擎对Date对象的解析。该代码将不会在浏览器中运行,因此那些好的解决方案将不适用。

    **并非北美所有地方/地区都会更改时间。*

    最佳答案

    if argDate == "March"
    {
    
        var firstOfMonth = new Date();
        firstOfMonth.setFullYear(year,3,1);
    
        //the day of week (0=Sunday, 6 = Saturday)
        var firstOfMonthDayOfWeek = firstOfMonth.getDay();
    
        var daysUntilFirstSunday =  (7-firstOfMonthDayOfWeek) % 7;
    
        var firstSunday = firstOfMonth.getDate() + daysUntilFirstSunday;
    
        // first Sunday now holds the desired day of the month
    }
    

    09-19 05:37