winXP,win7和vb.net下的不同时间戳

时间:2011-05-15 17:05:53

标签: windows vb.net timezone dst

在VB.net程序中,我使用IO.File.GetCreationTime来读取文件系统的文件创建时间。我很生气,因为返回的值与浏览器中显示的时间不匹配。在另一台机器上,时间显示正确。

  • 两台机器都使用NTFS
  • 我将文件从只读FAT32 USB驱动器复制到每台计算机的桌面
  • 两台机器使用相同的时区(GMT + 1加DST)

显示的时间戳:

  • 我的VB.net应用程序(两台机器) - 21:09
  • 资源管理器时间Windows XP - 22:09
  • 资源管理器时间Windows 7 - 21:09
  • (MacOS X - 21:09)

好消息是,我所说的文件是PDF文件。根据PDF的元信息,该文件是在 03上创建的。 2002年1月22:09

我希望每台计算机上的文件系统日期都相同。 你会如何使用VB.net解决这个问题?

1 个答案:

答案 0 :(得分:1)

我使用一个简单的应用程序来总结时间戳信息:

GetLastWriteTime(file)
GetLastWriteTimeUtc(file)
GetLastWriteTime(file).ToLocalTime
GetLastWriteTimeUtc(file).ToLocalTime
GetLastWriteTime(file).ToFileTime
GetLastWriteTimeUtc(file).ToFileTime

Date.Now
Date.Now.UtcNow

两台机器的输出相同。 出于某种原因,我更改了两台机器上的时区设置,打开和关闭DST。结果很有意思......

  • ...在Windows上关闭DST时 XP 所有时间戳减少了 一个(因为在DST我的时区 是 GMT + 2(现在),期间 冬天是GMT + 1)
  • ...仅限Windows 7计算机 在夏令时期间创建的文件(GMT + 2) 受此影响(我的文件是 创建于一月)

我猜它的效果相同,反之亦然。所以我的问题只是个问题。为了解决这个问题,我将只使用UTC函数并关注我的应用程序中的DST。所以仍然会有一个偏移,但只要它只是一个显示问题就应该没问题。