【问题标题】:compare two dates in dd/mm/yyyy format比较 dd/mm/yyyy 格式的两个日期
【发布时间】:2018-08-01 11:03:37
【问题描述】:

我有一列将日期存储为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 的东西?)

【问题讨论】:

  • 你不能把date_movdata_last比较一下吗? 如果你必须格式化它们..而不是格式化为短日期,为什么不格式化为 YYYYMMDD?这使得日期比较工作。

标签: excel vba date


【解决方案1】:

您将字符串转换为日期并比较它们:

' 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

【讨论】:

    【解决方案2】:

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

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

    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 P.M.),整数部分从 0 到 9999 表示 1900 年到 9999 年。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      相关资源
      最近更新 更多