从0:00减去时的Dateadd错误

时间:2012-11-30 16:31:30

标签: excel vba datetime excel-vba dateadd

我正在尝试将GMT小时的列转换为用户指定的时区。

当VBA尝试从01:00减去18000秒(GMT-5)时,我收到错误。

Selected_GMT = -18000
CellValue = "1/0/00 01:00"

New_Time = DateAdd("s", Selected_GMT,CellValue)

是否发生此错误,因为VBA无法确定00:00之前的小时数? 我已经找出了Selected_GMT的秒数,我该如何使用它来确定New_Time?

1 个答案:

答案 0 :(得分:0)

正如ooo在上面的评论中指出的那样,1/0/00是无效的日期代码。然而,即使这是你问题中的拼写错误,日期使用2位数年份代码的事实也会引发“第00年哪一年”的问题。如果您已经知道这一点,请道歉,但下面我已经从我在其他地方写过的内容中提取了Excel日期的工作概况。相关部分是“零日和以前的Excel”;如果“00”实际上代表单元格中的* 19 * 00(如果您刚刚在01:00作为单元格条目打孔),那么您将遇到问题从中减去。在这种情况下,可能明确输入日期和时间(可能使用当前日期)但使用格式隐藏日期组件):

  

Excel使用“日期序列”系统,其中包含您使用的任何日期   计算表示为正整数值。那个整数   值是从任意开始日期计算的。添加整体   数字到特定的序列日期会让你前进   一次一天的日历,减去整数就会让你感动   向后...只要你没有超过的开始日期   序列号系统并以负值结束。时代是   表示为一天的分数; 0.25分钟,早上6分,中午0.5分,0.75分   下午6点等等。

     

Excel日期

     

对于Excel for Windows,开始日期是1900年1月1日。也就是说,如果在Excel中的单元格中输入值1   并将其格式化为日期,您将看到该值为1900年1月1日   将是1900年1月2日,1月3日3日,依此类推。 367   代表1901年1月1日,因为Excel将1900年视为一个   闰年366天。换句话说,每一天都过去了   在序列日期加1。

     

重要的是要记住,上述内容仅与Excel相关,并且   不要访问,SQL Server或其他数据库产品(或Visual Basic,   对于这个问题)。例如,在Access中,有效日期的范围是   9999年1月1日至12月31日,可存储的范围相同   在具有Date数据类型的VB或VBA变量中。

     

Excel和Macintosh

     

Macintosh系统使用的开始日期为1904年1月1日,巧妙地绕过了1900年的闰年问题。不过那个   是否意味着序列日期之间存在4年的差异   在Excel for Windows中创建的工作簿中的值,以及在其中创建的值   适用于Mac的Excel。幸运的是工具 - >选项 - >计算   (在2007年之前的Excel版本上),您将找到一个名为的工作簿选项   1904年日期制度。如果选中,则Excel知道该工作簿   来自Macintosh,将调整其日期计算   相应

     

Excel时间

     

如引言中所述,时间计算为a   一天的一小部分。例如,1.5表示1900年1月2日中午。   1.75代表1900年1月2日下午6点。

(关于1900年闰年虫的消息)

  

从1900年3月1日起,Excel的日期是正确的,但如果您格式化   数字1使用格式dddd,mmmm dd,yyyy你会得到的   结果1900年1月1日星期日。这是不正确的; 1900年1月1日是一个   星期一,不是星期天。这一天的错误一直持续到您到达为止   3月1日,这是Excel日历中第一个真正正确的日期。

     

零日和之前的Excel

     

如果使用零值并显示它   在日期格式中,您将获得1900年1月0日星期六的无意义日期。   如果您尝试将负值格式化为日期,那么您将获得一个   细胞充满了哈希标记。同样,如果您尝试获取日期序列   使用Excel函数的数字,如DateValue,你只能这样做   1900年1月1日或之后的日期。尝试指定更早的日期   日期将导致错误。

     

1904(Macintosh)系统从零开始。 (1904年1月1日有一个   值为0,而不是1. Excel的在线帮助将Mac系统描述为   从1月2日开始,但这可能比解释更容易   用户为什么序列日期值0适用于Mac但不适用于Excel。)   负数不会产生错误,但数字会是   被视为绝对的。也就是说,1和-1都将被视为2   1904年1月。