2012-05-14 57 views
9

我使用下面的代碼目錄的修改日期時間寫入標籤GetLastWriteTime回到1600年12月31日晚上7:00:00點

string selectedPath = comboBox1.SelectedItem.ToString(); 
DateTime lastdate = Directory.GetLastWriteTime(selectedPath); 
datemodified.Text = lastdate.ToString(); 

它返回的日期1600年12月31日7:00:00 PM,我不知道它是從哪裏得到的。任何人都可以幫助我理解爲什麼它會返回該日期以及我如何修復它?我使用.NET 3.5

回答

29

the documentation

如果路徑參數所描述的目錄不存在,這個方法返回午夜12點,1月1日,公元1601(CE)協調世界時間(UTC),根據當地時間調整。

那麼想必你的時區爲UTC-5(一月),以及目錄不存在...

+4

只要告訴我,喬恩,你還記得那一切嗎? –

+8

@NikhilAgrawal查找msdn上的調用定義。一個人不必記住所有事情,只需要記住看看 –

0

首先想到的是,是你的時間設置正確。第二個想法是右鍵單擊該文件夾並查看它在屬性中的含義。最後,我會創建新的測試文件夾,並對其執行GetLastWriteTime測試,以便您知道您要回來的是什麼。

+0

2012年5月7日星期一,4:06:00 PM是其中一個文件夾的日期。這對我來說很奇怪。代碼是有道理的,但它返回不是 – heinst

+0

我會想象那個字符串是不正確的 –

0

GetLastWriteTime並不總是可靠的返回日期時間,使用此

string selectedPath = comboBox1.SelectedItem.ToString(); 
DateTime now = DateTime.Now; 
TimeSpan localOffset = now - now.ToUniversalTime(); 
DateTime lastdate = File.GetLastWriteTimeUtc(selectedPath) + localOffset; 
datemodified.Text = lastdate.ToString(); 
0

老問題,但今天我面對這個問題。當您的路徑無效或文件不存在時,該特定日期也會返回,因爲在這些情況下沒有內置異常。

相關問題