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。
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言