網頁

2017年5月31日 星期三

【社群】意外找出沒睡飽時寫出的日期Bug


今天意外catch到一條Debug.Log,
雖然不影響正常流程,
但總覺得哪裡不太對勁,
沿著Log抽絲剝繭下去才發現,
原來是我之前寫的某個類似「每日登入」機制的部分寫錯了。
.
為了計算出隔天0時的日期,
我寫了像是這樣的代碼:

System.DateTime l_datetimeNextDay = new System.DateTime (i_dateTime.Year, i_dateTime.Month, (i_dateTime.Day + 1));

假設原始時間是2017/01/05 15:30:00,
它就會得出2017/01/06 00:00:00的結果,
這在平常都能夠正常運作,
但相信大家如果有睡飽的話,可能已經看出問題了。
.
那就是當日期進入本月份最後一天時,
會得出2017/05/31 + 1 = 2017/05/32的錯誤日期!
應該寫成這樣才對:

System.DateTime l_datetimeNextDay = new System.DateTime (i_dateTime.Year, i_dateTime.Month, i_dateTime.Day).AddDays (1f);

真的很慶幸我每天都在認真工作,
才能在今天這個日子檢查出這個Bug。

沒有留言:




張貼留言