代码之家  ›  专栏  ›  技术社区  ›  Lelio Faieta

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

  •  0
  • Lelio Faieta  · 技术社区  · 8 年前

    我有一个专栏,我把日期存储为 dd/mm/yyyy . 然后我要求用户在表单中输入新的日期(始终为dd/mm/yyyy)。我想将输入日期与excel中已经存在的最后一个日期进行比较。

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

    因为它将比较两个字符串,而且测试将失败,因为2018年10月3日看起来小于2018年9月23日。

    测试它们的正确方法是什么?类似于将它们转换为时间戳,然后进行比较(但是否有类似于excel中的unixtimestam的东西?)

    2 回复  |  直到 8 年前
        1
  •  2
  •   Salman Arshad    8 年前

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

    ' 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
  •  0
  •   Lelio Faieta    8 年前

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

    IMHO,有不止一种方法。

    if() 具有 value() 会很直接的。

    如果() 具有 year() , month() , day() , hour() .. 是另一个。

    “类似于将它们转换为时间戳,然后进行比较(但是 excel中是否有类似UnixtTimeStamp的内容?“

    最简单的(对我来说)是 值() 功能。然后建立所需的 如果() 关于它的声明。

    希望有帮助。(:


    默认情况下,Microsoft Excel for Windows使用1900日期系统。也就是说第一天是1900年1月1日。一 Date 和 Time 函数可用于操作年份/日期和时间/小时/分钟值。Excel中的日期/时间存储为数字。其中,小数部分从0.0到0.99988426表示0:00:00(12:00:00 AM)到23:59:59(11:59:59 P.M),整数部分从0到9999表示1900年到9999年。

    推荐文章