【问题标题】:VB difference between windows file hour and VB file hourwindows文件小时和VB文件小时的VB区别
【发布时间】:2016-04-15 11:00:15
【问题描述】:

如何在不受windows时间设置影响的情况下从文件中获取日期?

我正在尝试使用 VB 读取日期文件,但由于夏令时,我获得了写入文件属性 (WDT) 的时间与 VB (VBT) 返回的时间之间的差异

如果我在夏季读取冬季保存的文件,我有一个 VBT = WDT+1h 的差异。同样的情况下,如果我在冬天读取夏天保存的文件,我会得到 VBT = WDT-1h 的差异。

【问题讨论】:

  • 如果您不想要本地时间,请使用 FileInfo.LastWriteTimeUtc 等属性而不是 FileInfo.LastWriteTime。并不是说它有什么不同,但它确实更明显地表明,夏天的上午 10 点不是冬天上午 10 点后 24 小时的倍数。
  • 重新标记为 VBA,因为它看起来是正在使用的语言。

标签: vba date time difference


【解决方案1】:

您需要将 DateTime(s) 转换为 UTC 并比较 那些 次。这是没有对夏令时等进行任何调整的时间。

DateTime 类型 ToUniversalTime 有一个扩展,它返回 UTC 值:

https://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime(v=vs.110).aspx

例子:

    Dim currentDateTime = DateTime.Now
    Debug.WriteLine(currentDateTime.ToString)
    Debug.WriteLine(currentDateTime.ToUniversalTime.ToString)

我机器上的输出(英国夏令时的英国时区 + UTC 1 小时)

15/04/2016 12:21:04
15/04/2016 11:21:04

请注意,如果您希望当前系统时间直接以 UTC 表示,还有一个 DateTime.UtcNow

【讨论】:

  • 我尝试实现此功能,但无法识别类型。出现一条错误消息,指出 Visual Basic 不处理 Active X。
  • 您确定您使用的是 VB.NET 而不是 VB6、VBA 或 VB Script?
  • 其实我用的是VBA。
  • 也许您现在可以看到用您正在使用的语言正确标记问题有助于达成解决方案?
猜你喜欢
  • 1970-01-01
  • 2014-01-28
  • 2023-03-21
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
相关资源
最近更新 更多