複製代碼 代碼如下:
var odatef = new Date();
odatef.setFullYear(2012);
odatef.setMonth(5)
odatef.setDate(1);
fday = ordatef.getDay();
如果今天是5月30日,通過上面的代碼,我應該是擷取到下個月,即6月1日是星期幾?並賦值給變數fday;
果然,我可以正確擷取到;
過程是:
1.執行這句 odatef.setFullYear(2012); 那麼odatef對像會是:2012年5月30日;
2.執行到這句 odatef.setMonth(5); 那麼odatef對像會是:2012年6月30日;
3.執行到這句 odatef.setDate(1); 那麼odatef對像會是:2012年6月1日;
4.執行到這句 ordatef.getDay(); 那麼擷取的就是:2012年6月1日,是星期幾了,正是我們想要的!
如果今天是5月31日,同樣是上面的代碼,我卻無法正確擷取到下個月是星期幾了。
原因:
1.執行這句 odatef.setFullYear(2012); 那麼odatef對像會是:2012年5月31日;
2.執行到這句 odatef.setMonth(5); 那麼odatef對像會是:2012年6月31日;問題就出在這第二步:6月份,是沒有31號的,所以它就會跳到7月 那麼odatef 對象會是:2012年7月31日,如果7月也沒有31日,繼續跳到8月,直到有31日的月份;
3.執行到這句 odatef.setDate(1); 那麼odatef對像會是:2012年7月1日;
4.執行到這句 ordatef.getDay(); 那麼擷取的就是:2012年7月1日,是星期幾了,不是我們想要的!~
解決辦法:換一下語句的位置先設定日期,再設定月份!
複製代碼 代碼如下:
var odatef = new Date();
odatef.setFullYear(2012);
odatef.setDate(1);
odatef.setMonth(6)
fday = ordatef.getDay();
1.執行這句 odatef.setFullYear(2012); 那麼odatef對像會是:2012年5月31日;2.執行到這句 odatef.setDate(1); 那麼odatef對像會是:2012年5月1日;
3.執行到這句 odatef.setMonth(5); 那麼odatef對像會是:2012年6月1日;
4.執行到這句 ordatef.getDay(); 那麼擷取的就是:2012年6月1日,是星期幾了!~~~
總結:要搞清楚每個語句,執行的結果倒底是什麼,或者返回的是什麼。先前一直以為,就是設定年份,月份。沒考慮設定之後的結果或返回的東西!