繁体   English   中英

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

[英]Different timestamps under winXP, win7 and vb.net

在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的元信息,该文件创建于2002年1月3日。

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

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

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

Date.Now
Date.Now.UtcNow

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

  • ...当您在Windows XP上关闭DST时, 所有时间戳都会减少1(因为在DST期间,我的时区是GMT + 2(现在) ,在冬季是GMT + 1)
  • ...在Windows 7计算机上, 仅DST(GMT + 2)期间创建的文件受此影响(我的文件是在一月创建的)

我想这是相同的效果,反之亦然。 所以我的问题只是一个巨大的问题。 为了解决这个问题,我将只使用UTC功能并在我的应用程序中关心DST。 因此仍然会有偏移,但是只要是显示问题,它就可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM