在 vbscript 中处理时区

Posted

技术标签:

【中文标题】在 vbscript 中处理时区【英文标题】:Dealing with timezones in vbscript 【发布时间】:2019-05-05 09:22:54 【问题描述】:

我正在尝试使用 vbs 更改一些旧的 .asp 文件。我们的数据库将转换为以 UTC 存储日期,但在网页上它应该以“欧洲/赫尔辛基”时区显示日期和时间(

TimeZoneInfo.FindSystemTimeZoneById("FLE Standard Time")

在 C# 中)。如何使用 vbscript 将我从 db 查询(查询也在 .asp 文件中运行并将结果放入表中)转换为更正日期时间的 UTC 日期?

【问题讨论】:

@SalmanA 只要您知道时区偏移量,您就可以使用 DateAdd() 到 + - 从传递的日期时间值开始的小时数。 @Lankymart 这些是旧日期,由于我们有夏令时,添加的小时数并不总是相同。 我确实在我的回答中指出了这一点,你如何锻炼应该应用 DST 和不应该应用什么取决于你,并且取决于你必须使用的信息。他们用 .Net 宠坏了你。 【参考方案1】:

只需使用 DateAdd() 偏移 UTC 日期即可。

Const EETOffset = -2 'EET offset from UTC is -2 hours
Dim dbDateValue  'Assumed value from DB
Dim newDate
'... DB process to populate dbDateValue
newDate = DateAdd("h", EETOffset, dbDateValue)

注意:这种方法的一个问题是您还必须根据年。当您考虑到某些地方不使用它并全年使用 EET 时,这也更加困难。 见EET – Eastern European Time (Standard Time)。

根据您使用的 RDMS,您甚至应该能够在日期到达页面之前作为初始查询的一部分对其进行操作。


有用的链接

Format current date and time How to format a datetime with minimal separators and timezone in VBScript?

【讨论】:

所以没有简单的方法可以做到这一点(如果日期是夏季或冬季时间,则无需手动计算)仅使用 vbscript? @Margo 我想也许System.TimeZoneInfo 可以用CreateObject 实例化,但它看起来不像.Net 将那个类暴露给COM 所以简而言之......不,没有。

以上是关于在 vbscript 中处理时区的主要内容,如果未能解决你的问题,请参考以下文章

VBScript 上的错误处理:不抛出错误

是否可以在批处理文件中嵌入和执行VBScript而不使用临时文件?

是否可以在不使用临时文件的情况下在批处理文件中嵌入和执行 VBScript?

使用 VBScript 制作批处理文件代码以使用 Unicode 符号

调用 VBScript 时在批处理脚本中设置参数

是否可以在 UNIX 环境中运行 VBScript?