我正在尝试使用VBA获取此日期模式yyyy-MM-dd HH:mm:ss z但无法找到任何解决方案。
我从Excel单元格或使用Now Function获取输入时间,然后使用Format函数对其进行格式化,但没有找到任何格式给我提供时区信息。
Format(Now, "yyyy-dd-MM HH:mm:ss")
感谢您的帮助!
答案 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
)。你可以使用一个公式或外部函数,但没有任何内置的东西,除了你自己的外部知识之外,没有任何东西可以告诉你这个领域在太平洋时间 - 除了你自己的外部知识。