比较dd / mm / yyyy格式的两个日期

时间:2018-08-01 11:03:38

标签: excel excel-vba date

我有一列将日期存储为dd/mm/yyyy。然后,我要求用户以表格形式输入新日期(始终为dd / mm / yyyy)。我想将输入日期与excel中的最后一个日期进行比较。

If Format(data_mov, "Short Date") < Format(data_last, "Short Date") Then

绝不可行,因为它将比较两个字符串,并且测试将失败,因为03/10/2018看起来小于23/09/2018。

测试它们的正确方法是什么?像将它们转换成时间戳然后进行比较(但是在excel中是否有unixtimestamp之类的东西?)

2 个答案:

答案 0 :(得分:2)

您将字符串转换为日期并进行比较:

' dd/mm/yyyy
' 1234567890

Dim Date1: Date1 = DateSerial(Mid(data_mov, 7, 4), Mid(data_mov, 4, 2), Mid(data_mov, 1, 2))
Dim Date2: Date2 = DateSerial(Mid(data_last, 7, 4), Mid(data_last, 4, 2), Mid(data_last, 1, 2))

If Date1 < Date2 Then
    ' ...
End If

答案 1 :(得分:0)

  

“测试它们的正确方法是什么?”

恕我直言,有不止一种方法。

if()value()将很简单。

if()year()month()day()hour() ...

  

“有点像将它们转换为时间戳然后进行比较(但   在Excel中是否有类似unixtimestamp的东西?)”

(对我而言)最简单的方法是使用value()函数。然后在其上构建所需的if()语句。

希望有帮助。 (:


Microsoft Excel for Windows默认情况下使用1900日期系统。这意味着第一个日期是1900年1月1日。DateTime函数可用于操作年份/日期和时间/小时/分钟值。 Excel中的日期/时间存储为数字。小数部分范围从0.0到0.99988426代表0:00:00(12:00:00 AM)到23:59:59(11:59:59 PM),整数部分范围从0到9999代表1900年到9999年。