获取日期模式yyyy-MM-dd HH:mm:带VBA的ss z

时间:2016-09-19 10:02:05

标签: excel vba excel-vba datetime timezone

我正在尝试使用VBA获取此日期模式yyyy-MM-dd HH:mm:ss z但无法找到任何解决方案。

我从Excel单元格或使用Now Function获取输入时间,然后使用Format函数对其进行格式化,但没有找到任何格式给我提供时区信息。

Format(Now, "yyyy-dd-MM HH:mm:ss")

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

Excel中的日期/时间字段不包含任何时区信息。它的数字表示是" OLE自动化日期",according to MSDN定义为:

  

OLE自动化日期实现为浮点数,其积分分量是1899年12月30日午夜之前或之后的天数,其小数分量表示当天的时间除以24。例如,午夜,1899年12月31日以1.0表示; 1900年1月1日上午6点,由2.25表示; 1899年12月29日午夜以-1.0表示;和1899年12月29日上午6点用-1.25表示。

这个定义中没有任何地方说明时区参考是什么。它不一定是您正在查看文件的计算机的本地时区,因为您可以将文件移动到另一个时区的计算机,并且数据不会更改。它也不一定基于UTC。至少,没有显式将数据定义为UTC。您也可以将本地日期/时间值显示为具有相同表示的UTC日期/时间值。

因此,只有作为Excel电子表格的所有者,才能确定给定日期/时间字段中的数据对时区的含义。如果您知道这些字段包含UTC时间戳,那么只需在输出字符串中添加一个字符Z即可。如果您知道字段固定为UTC + 2,则将+02:00添加到输出字符串。如果您只知道字段位于"太平洋时间",那么您就会遇到问题,因为您必须确定它们是在PST(-08:00)还是PDT( -07:00)。你可以使用一个公式或外部函数,但没有任何内置的东西,除了你自己的外部知识之外,没有任何东西可以告诉你这个领域在太平洋时间 - 除了你自己的外部知识。