標題:
如何比較 民國日期
[打印本頁]
作者:
Andy2483
時間:
2023-4-27 14:17
標題:
如何比較 民國日期
各位前輩好,後學請教各位前輩
有什麼方式可以改善兩個民國日期邏輯值與普通認知不同
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
執行結果:
[attach]36239[/attach]
作者:
准提部林
時間:
2023-4-27 16:11
本帖最後由 准提部林 於 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")
但可能有些版本不支持
作者:
Andy2483
時間:
2023-4-27 16:41
本帖最後由 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
作者:
shuo1125
時間:
2023-4-27 22:58
回復
2#
准提部林
回復
3#
Andy2483
受教了...感謝高手無私的奉獻!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)