Re: [問題] javascript取得月份天數的方法

看板Ajax作者 (自立而後立人。)時間14年前 (2011/10/27 00:04), 編輯推噓5(508)
留言13則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《StarTouching (撫星)》之銘言: : 我發現有個方法是 : new Date(year, month, 0).getDate() 這裡有個trick 可能其他人沒看見的地方是 假設你要查 2011/10 (year = 2011 , month = 10) 事實上 new Date( 2011,10,0) 是 2011/11/0 的意思 (記得month 在api中是從0開始嗎 ) 也就是2011/10/最後一天 但是如果你assume 這裡的month 變數是從 0開始 (也就是2011/10 你給 year= 2011,month = 9 ) 那你一樣會拿到上個月的日期 這是要小心的 : 註: 和 setDate(0) 效果不同 每次call setDate(0) 都會移到當前月份的上個月的日期, 而且它是每次call都會改變 我不確定你說效果不同是用什麼方式做比較 但是 var d = new Date( 2011,10,1); d.setDate(0); 跟 var d = new Date( 2011,10,0); 會拿到一樣的結果哦 :P Mon Oct 31 2011 00:00:00 GMT+0800 (Taipei Standard Time)} setDate 還有一個要小心的地方, 重複call同樣的setDate(0)是會改變狀態的。 var d = new Date( 2011,10,1) d.setDate(0); //d = Mon Oct 31 2011 d.setDate(0); //d = Mon Sep 31 2011 : 不過w3schools好像也沒提到這件事情 : 很好奇這是正規的方法嗎? : 還是很可能因瀏覽器而異? 這是spec 上規定的事情,不太可能因為瀏覽器而異, 不過我覺得你這樣的描述並沒有掌握到它真正會這樣作得理由, 你只知道有這件事,但不知道為什麼。XD 這篇文章應該解釋的有比較清楚一點, 總之 date = 0 表示是要找上個月的最後一天。 然後處理日期操作時一定要特別小心 month 是從0 開始這件事 -- 網頁上拉近距離的幫手 實現 GMail豐富應用的功臣 數也數不清的友善使用者體驗 這就是javascript 歡迎同好到 AJAX 板一同討論。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 208.54.86.187 ※ 編輯: TonyQ 來自: 208.54.86.187 (10/27 00:18)

10/27 00:25, , 1F
喔對 我的確忘了這件事情 是我思考不周 受教了 感謝
10/27 00:25, 1F

10/27 04:45, , 2F
推month從0開始~ 之前也卡這邊卡半天!!!
10/27 04:45, 2F

10/27 11:42, , 3F
忘了 month 從 0 開始 +1 @@ (明明 C 也是這樣定的卻忘了..)
10/27 11:42, 3F

10/28 16:15, , 4F
其實主要是因為date從1開始算 所以就一時搞混忘了...
10/28 16:15, 4F

10/28 16:16, , 5F
有人知道date值是1-31而非0-30的原因嗎?
10/28 16:16, 5F

10/29 13:47, , 6F
我一直覺得 月份是 0-11 而 日期保持 1-31 的原因..
10/29 13:47, 6F

10/29 13:48, , 7F
是因為方便寫程式的原因..
10/29 13:48, 7F

10/29 13:48, , 8F
月份在某些時候, 不是想顯示數字, 而是月份的英文單字或縮寫
10/29 13:48, 8F

10/29 13:50, , 9F
這時候定義一個 var month = ['JAN', 'FEB', 'MAR',...]
10/29 13:50, 9F

10/29 13:51, , 10F
顯示月份的時候就使用 month[i] // i 就是月份的取到的值
10/29 13:51, 10F

10/29 13:54, , 11F
因為這個原因, 所以一般取'年'跟'日'都會是原本想取得的數字
10/29 13:54, 11F

10/29 13:55, , 12F
而'月份'跟'星期幾' 這兩個會是從 0 開始...方便顯示的操作
10/29 13:55, 12F

10/30 15:24, , 13F
←曾經因為這個問題浪費一個下午
10/30 15:24, 13F
文章代碼(AID): #1Eg2-R_d (Ajax)
文章代碼(AID): #1Eg2-R_d (Ajax)