在一个 VB.net 程序中,我使用了IO。File.GetCreationTime 用于读取文件系统的文件创建时间。我很生气,因为返回的值与资源管理器中显示的时间不匹配。在另一台计算机上,时间显示正确。
- 两台机器都使用 NTFS
- 我将文件从只读FAT32 USB驱动器复制到每台机器的桌面
- 两台计算机使用相同的时区(GMT+1 加 DST)
显示的时间戳:
- 我的 VB.net 应用(两台计算机)- 21:09
- 浏览器时间视窗XP - 22:09
- 资源管理器时间视窗 7 - 21:09
- (MacOS X - 21:09)
好消息是,我所说的文件是一个PDF文件。根据PDF的元信息,该文件是在03日创建的。 2002年01月22:09
我希望每台机器上的文件系统日期都相同。您将如何使用 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 上关闭 DST 时XP 所有时间戳都减少了一个(因为在夏令时期间我的时区是 GMT+2(现在),在冬季是格林威治标准时间+1)
- 。仅在 Windows 7 计算机上在夏令时 (GMT+2) 期间创建的文件受此影响(我的文件是创建于 1 月)
我想反之亦然。所以我的问题只是一个令人沮丧的问题。为了解决这个问题,我将只使用UTC函数并关心我的应用程序中的DST。所以仍然会有偏移,但只要只是显示问题,应该没问题。