[店小二的小天地]javascript日期比較問題

相信很多人被這個問題所困擾-javascript的字串能力很強,然而在數值的運算上就略顯不足了。

常看到可以用的函式如下:

  • _date = new DATE();
  • _date.getfullyear()
  • _date.getmonth()
  • _date.getDate()

字串轉數值,最常用的暴力函式為 parseInt(str) 。

然後Javascript有幾個要注意的地方:

  • 月份是從「index=0」開始的,如5月為「index=4」。

所以當您取出month資訊時,別忘了要加1才是實際的月份

  • 遇到2月28天或29天,或有大月31時,很奇怪的,javascript自己常會自動進位到下一月份去。(店小二真的是百思不得其解!)

  所以當您在使用 Date.parse() 函式時,遇到大月或不足30天的,常會出錯。


  綜合以上的問題,最後,店小二想到一個解決方式,

function Date_compare(_date){

var f1_today = _Today.getFullYear()*10000 +(_Today.getMonth()+1)*100 + _Today.getDate();

var _date_to_value=0;
if (_date !== “”){
_date_to_value = _date.substr (0,4)*1000000 + _date.substr(5,2)*10000 + _date.substr(8,2)*100;//
_date_to_value = _date_to_value/100;
}

if (f1_today  – _date_to_value <0)

return true;

return false;

}


  javascript遇到有乘除運算時,會直接將字串轉為數值。

  但可不要偷懶,最後日期的部份還是要多做一次乘法,不然您會發現到javascript最後還是以字串輸出。

  字串減字串,永遠都不會有正確的值輸出的,提供參考!!

 

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

訂閱最新動態與關注睡眠知識

輸入你的電子郵件地址訂閱網站的新文章,使用電子郵件接收最新的知識與動態。

線上詢問

「僅於上班時段,開放客戶服務聯絡與床墊相關專業諮詢」

%d 位部落客按了讚: