我需要比较两个日期。它们采用文本格式,看起来像30.05.2016,因为它们是从其他程序中提取的。 问题是,在一个系统上,我得到了不同的日期格式(2016年5月30日),而不是另一个(2016年5月30日)。
我想知道我的想法是否正确,如果不是我应该做什么。
首先,我会检查我有哪种格式。 如果(2016年5月30日)我会做
1. Replace "." to "/"
2. CDate(value)
3. NumberFormat = "General"
4. Comparing date1 < date2
如果(2016年5月30日)我会做
1. DateValue(Replace "." to "/")
2. NumberFormat = "General"
3. Comparing date1 < date2
我仍然在考虑如何编写这段代码,你在这个阶段的帮助会很好。
答案 0 :(得分:1)
这假设日期实际上是文字格式。第一个 UDF()处理美国式日期:
Public Function IsD1LessThanD2(d1 As String, d2 As String) As Boolean
' US Date format
IsD1LessThanD2 = CDate(Replace(d1, ".", "/")) < CDate(Replace(d2, ".", "/"))
End Function
第二个 UDF()处理欧洲格式:
Public Function IsD1LessThanD2_E(d1 As String, d2 As String) As Boolean
' European Date format
ary1 = Split(d1, ".")
ary2 = Split(d2, ".")
d1 = DateValue(ary1(1) & "/" & ary1(0) & "/" & ary1(2))
d2 = DateValue(ary2(1) & "/" & ary2(0) & "/" & ary2(2))
IsD1LessThanD2_E = d1 < d2
End Function
答案 1 :(得分:0)
您可以将两个字符串格式化为日期格式
Dim date1, date2 As Date
' string1 in the format 5/30/2016
date1 = Format(string1, "mm/dd/yyyy")
' string2 in the format 30/5/2016
date2 = Format(string2, "dd/mm/yyyy")
然后你可以简单地比较日期。