FTP上次文件写入时间 - wininet.dll C#wrapper - 日期是一年前的

时间:2011-05-05 02:06:37

标签: c# file date ftp wininet

我使用以下库http://ftplib.codeplex.com/,它是wininet.dll的包装器,用于执行一些FTP命令。

由此产生的应用程序在3台Windows XP计算机上运行良好。但是,在两台不同的Server 2003机器上运行的相同应用程序存在问题。

任何上次修改日期少于12小时的文件,最终修改日期为12个月之前的实际日期。我使用以下代码从FILETIME结构转换为日期时间。这工作正常,它是实际传入的值是错误的

uint low = (uint)time.dwLowDateTime;
long ft = (((long)time.dwHighDateTime) << 32 | low);
DateTime.FromFileTimeUtc(ft));
return DateTime.FromFileTimeUtc(ft);

下面是一些用于验证输入的跟踪输出。在ftp程序上查看时文件的实际文件时间相隔30分钟,而不是一年。

Windows filetime = 129490226400000000
Converted To = 4/05/2011 10:44:00 p.m.
Windows filetime = 129174884400000000
Converted To = 4/05/2010 11:14:00 p.m.

我查看了所有测试机器上的区域设置和时区,它们是相同的。所有测试都已在同一个FTP服务器上完成,并且比较了相同的文件。从我所读到的内容中,wininet.dll与XP中的版本与Server 2003相同。有没有人有任何想法为什么我们得到的文件时间是错误的?

PS我已经读过ftp服务器只返回日期和月份值的问题,这可能会导致从上一年末,新年早期获取文件并且文件日期值达到一年时出现问题在未来,但这似乎无关,因为它特定于不同的ftp客户端环境,并且是过去一年,并且文件是在前一天创建的。

0 个答案:

没有答案