0

我正在尝试将带有 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?

4

1 回答 1

0

正如 ooo 在上面的评论中指出的那样,1/0/00 是无效的日期代码。但是,即使这是您的问题中的拼写错误,日期使用 2 位数年份代码这一事实也引出了“哪一年 00?”这个问题。如果您已经知道这一点,我们深表歉意,但下面我从我在其他地方写的东西中摘录了 Excel 日期如何工作的概述。相关部分是“Excel中的第零天和之前”;如果“00”实际上表示单元格中的* 19 * 00(如果您刚刚将“01:00”作为单元格条目打孔),那么您将遇到从中减去的问题。在这种情况下,也许显式输入日期和时间(也许使用当前日期),但使用格式隐藏日期组件):

Excel 使用“日期序列”系统,其中您在计算中使用的任何日期都表示为正整数值。该整数值是从任意开始日期计算的。将整数添加到特定的序列日期会使您在日历中一次向前移动一天,而减去整数会使您向后移动……只要您不超过序列号系统的开始日期并最终结束带有负值。时间表示为一天的分数;早上 6 点 0.25,中午 0.5,下午 6 点 0.75,依此类推。

Excel 日期

在 Excel for Windows 的情况下,开始日期是 1900 年 1 月 1 日。也就是说,如果您在 Excel 的单元格中输入值 1 并将其格式化为日期,您将看到该值是 1900 年 1 月 1 日。2 将是 1900 年 1 月 2 日,3 是 1 月 3 日,以此类推。367 表示 1901 年 1 月 1 日,因为 Excel 将 1900 年视为具有 366 天的闰年。换句话说,每过去一整天,序列日期就会增加 1。

请务必记住,上述内容仅与 Excel 相关,与 Access、SQL Server 或其他数据库产品(或 Visual Basic,就此而言)无关。例如,在 Access 中,有效日期的范围是 100 年 1 月 1 日到 9999 年 12 月 31 日,这与可以存储在具有 Date 数据类型的 VB 或 VBA 变量中的范围相同。

Excel 和 Macintosh

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

卓越时报

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

(剪掉一点关于 1900 年闰年的错误)

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

Excel 中的第 0 天及之前

如果您使用值零并以日期格式显示它,您将得到 1900 年 1 月 0 日星期六的无意义日期。如果您尝试将负值格式化为日期,您将得到一个充满井号的单元格。同样,如果您尝试使用 Excel 函数(如 DateValue)获取日期序列号,则只能对 1900 年 1 月 1 日或之后的日期执行此操作。尝试指定更早的日期将导致错误。

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

于 2012-11-30T19:44:58.007 回答