FileInfo显示一个特殊的日期

时间:2010-05-19 13:44:38

标签: .net

为什么以下显示12/31/1600 ???

Imports System.IO

Module Module1

Sub Main()
    Dim fi As New FileInfo("DocFiles\phillips_phone_number.txt")
    Console.WriteLine(fi.FullName)
    Console.WriteLine(fi.LastAccessTime.ToShortDateString)
    Console.ReadKey()
End Sub

结束模块

2 个答案:

答案 0 :(得分:2)

似乎代码无法找到该文件,请参阅SDK http://msdn.microsoft.com/en-us/library/system.io.file.getlastaccesstime.aspx中的GetLastAccessTime函数文档

它说,

  

如果路径中描述了文件   参数不存在,此方法   1月1日午夜12点返回,   1601 A.D.(C.E。)Coordinated Universal   时间(UTC),调整为当地时间。

答案 1 :(得分:0)

你没有指定你看到的时间,只有日期,但我怀疑它是23:00:00。如果您使用Console.WriteLine(fi.LastAccessTime),则可能会看到它打印-36000000000

该文件的最后访问时间戳记返回0,因为,因为Sijin pointed out,路径无效,或者因为disabled last-access update NTFS卷,或因为您使用的是it is disabled by default

中的Vista或更高版本

在任何情况下,由于Windows uses January 1, 1601epoch base,因此日期为0将返回00:00:00 1601-01-01

现在你为什么要把它看作1600年12月31日呢?简单:时区。您的个人资料没有传记信息,但您的姓名和传记部分中的拉丁语引文使不合理猜测您可能生活在西班牙的某个地方,时间为UTC + 01:00 。在这种情况下,当时间戳调整为本地时间时,它将花费时间(0)作为基数,并减去一小时将其转换为您的时区。因此,您获得-36000000000的值23:00:00 1600-12-31