返回列表 上一主題 發帖

如何比較 民國日期

如何比較 民國日期

各位前輩好,後學請教各位前輩
有什麼方式可以改善兩個民國日期邏輯值與普通認知不同
EX: 99/4/30 應該要小於 100/4/30,可是以下範例邏輯值卻是 False
後學駑鈍
請教各位前輩:後學出了什麼錯誤?怎麼正確比較?

Option Explicit
Sub TEST()
Dim T, T1
T = CDate("99/4/30")
T1 = CDate("100/4/30")
MsgBox T < T1
End Sub

執行結果:
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

本帖最後由 准提部林 於 2023-4-27 16:12 編輯

民國日期要先轉成西元, 才能比較
方法一:
split分割, 年+1911, 再合併
tr = split("100/1/1","/")
tr(0)= val(tr(0)) + 1911
tt = join(tr, "/")

方法二:
Format("r" & "100/1/1", "yyyy/mm/dd")
但可能有些版本不支持

TOP

本帖最後由 Andy2483 於 2023-4-27 16:47 編輯

回復 2# 准提部林


    謝謝前輩指導
瞭解了,學習方案如下,請前輩再指導

Sub TEST()
Dim T, T1
T = Split("99/4/30", "/"): T(0) = Val(T(0)) + 1911: T = CDate(Join(T))
'空白鍵隔開也辨認出來是日期,真神奇
T1 = Split("100/4/30", "/"): T1(0) = Val(T1(0)) + 1911: T1 = CDate(Join(T1))
MsgBox T < T1
End Sub
'執行結果是True

Sub YYY()
MsgBox Format("r" & "100/1/1", "yyyy/mm/dd")
End Sub
'執行結果是 r100/1/1
============================================
補充:
關鍵在+1911

Sub TEST_1()
Dim T, T1
T = "99/4/30": T = (Val(T) + 1911) & Mid(T, InStr(T, "/")): T = CDate(T)
T1 = "100/4/30": T1 = (Val(T1) + 1911) & Mid(T1, InStr(T1, "/")): T1 = CDate(T1)
MsgBox T < T1
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 2# 准提部林
回復 3# Andy2483
受教了...感謝高手無私的奉獻!!

TOP

        靜思自在 : 成功是優點的發揮,失敗是缺點的累積。
返回列表 上一主題