使用VBA获取date模式yyyy-MM-dd HH:mm:ss z

我试图用VBA得到这个date模式yyyy-MM-dd HH:mm:ss z,但找不到任何解决scheme。

我从Excel单元格或现在函数获取input的时间,然后使用格式化function格式化,但没有find任何格式,也给我时区信息。

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

谢谢你的帮助!

Excel中的date/时间字段不包含任何时区信息。 它的数字表示是一个“OLE自动化date”, 根据MSDN定义为:

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

在这个定义中没有任何地方说明时区参考是什么。 这不一定是您查看文件的计算机的本地时区,因为您可以将该文件移动到另一个时区的计算机,并且数据不会更改。 也不一定基于UTC。 至less,没有任何东西明确地将数据定义为UTC。 您可以使用相同的表示法将本地date/时间值显示为UTCdate/时间值。

因此,只有作为Excel电子表格的所有者才能确定给定date/时间字段中的数据与时区有关的含义。 如果您知道这些字段包含UTC时间戳,则只需在输出string中添加一个字符Z即可。 如果您知道字段固定为UTC + 2,则将+02:00添加到输出string。 如果你只知道田地在“太平洋时间”,那么你有一个问题,因为你必须决定是否在PST( -08:00 )或PDT( -07:00 )。 你可以使用一个公式或外部函数,但没有任何内置的东西,没有什么可以告诉你这个领域是在太平洋时代 – 除了你自己的外部知识。