星期日, 12月 27, 2020

[VFP] CTOD() 日期轉換

公司內發生的 bug,因為變成 SET DATE 環境日期設定,從 Taiwan 改為 YMD,導致 CTOD() 轉換日期異常,導致一連串錯誤,用段 Code 來記錄該情況
lcMonth = "10912"
lcYY = SUBSTR(lcMonth,1,3)
lcMM = SUBSTR(lcMonth,4,2)

SET DATE YMD
ldYMDDate = CTOD(lcYY + "/" + lcMM + "/01")
ldYMDYear = YEAR(ldYMDDate)

SET DATE TAIWAN
ldTAIWANDDate = CTOD(lcYY + "/" + lcMM + "/01")
ldTAIWANDYear = YEAR(ldTAIWANDDate)

TEXT TO lcMessage TEXTMERGE NOSHOW PRETEXT 2
	SET DATE YMD
	CTOD 轉日期:<<ldYMDDate>>
	取出西元年:<<ldYMDYear>>
	
	SET DATE TAIWAN
	CTOD 轉日期:<<ldTAIWANDDate>>
	取出西元年:<<ldTAIWANDYear>>
ENDTEXT 
MESSAGEBOX(lcMessage , 0 + 64 , "測試結果")
從下圖就可以發現,YMD 變成西元 109 年,Taiwan 則是西元 2020 年

[VFP] CTOD() 日期轉換-1

因為 CTOD() 會受 SET DATE 影響,所以建立一律改為用 DATE() 來轉日期,避免困惱

沒有留言:

張貼留言