我试图得到这个日期模式yyyy-MM-dd HH:mm:ss z与VBA,但找不到任何解决方案。
我正在从Excel单元格或Now函数输入时间,然后用Format函数格式化它,但没有找到任何格式,也给我时区信息。
Format(Now, "yyyy-dd-MM HH:mm:ss")
谢谢你的帮助!
Excel中的日期/时间字段不包含任何时区信息。它的数字表示是"OLE自动化日期",根据MSDN定义为:
OLE Automation日期被实现为一个浮点数,其整数部分是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
)中。您可以使用公式或外部函数来实现,但是没有任何内置功能,并且除了您自己的外部知识之外,根本没有任何东西可以告诉您该字段是太平洋时间。