GetLastWriteTime возвращается 31.12.16 в 19:00

Я использую следующий код для записи даты изменения времени каталога на этикетку

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

Он возвращает дату 31.12.16 в 19:00, которую я понятия не имею, откуда она берется. Может кто-нибудь помочь мне понять, почему он возвращает эту дату и как я могу это исправить? Я использую .NET 3.5

Ответы на вопрос(5)

GetLastWriteTime()/GetLastWriteTimeUtc() без жесткого кодирования даты / времени дозорной эпохи, которые используются для указания условия, что файл / каталог не найден, выглядит следующим образом:

// ##### Local file time version #####
DateTime fileTimeEpochLocal=DateTime.FromFileTime(0);
// Use File.GetLastWriteTime(pathname) for files
// and Directory.GetLastWriteTime(pathname) for directories
DateTime lastWriteTime=Directory.GetLastWriteTime(selectedPath); 

// Check for a valid last write time
if (lastWriteTime!=fileTimeEpochLocal) // File found
    DoSomethingWith(selectedPath,lastWriteTime);
else // File not found
    HandleFileNotFound(selectedPath);

// ##### UTC file time version #####
DateTime fileTimeEpochUtc=DateTime.FromFileTimeUtc(0);
// Use File.GetLastWriteTimeUtc(pathname) for files
// and Directory.GetLastWriteTimeUtc(pathname) for directories
DateTime lastWriteTimeUtc=Directory.GetLastWriteTimeUtc(selectedPath);

// Check for a valid last write time
if (lastWriteTimeUtc!=fileTimeEpochUtc) // File found
    DoSomethingWith(selectedPath,lastWriteTimeUtc);
else // File not found
    HandleFileNotFound(selectedPath);

GetLastWriteTime не всегда возвращайте достоверную дату, используйте это

DateTime now = DateTime.Now;
TimeSpan localOffset = now - now.ToUniversalTime();
DateTime lastdate = File.GetLastWriteTimeUtc(selectedPath) + localOffset;
datemodified.Text = lastdate.ToString();
Решение Вопроса

документация:

If the directory described in the path parameter does not exist, this method returns 12:00 midnight, January 1, 1601 A.D. (C.E.) Coordinated Universal Time (UTC), adjusted to local time.

Итак, предположительно, ваш часовой пояс UTC-5 (в январе), а каталог не существует ...

 11 июл. 2018 г., 18:38
@ Snoop: Вероятно, это просто эпоха, которая была выбрана. В вычислениях используется много эпох - 1582 для меток времени GUID, 1AD для .NET, 1970-01-01 для всего, что основано на Unix, 1900 для Excel IIRC ...
 11 июл. 2018 г., 17:36
Есть ли какое-либо значение для этой даты (кроме параметра не существует)?
 11 июл. 2018 г., 18:39
@JonSkeet Хорошо. Я давно не занимался Java, но я знаю, что у них был один ... который был похож на "когда Java была изобретена". или что-то ... Мне было интересно, было ли в Microsoft историческое значение при выборе этой конкретной даты.
 14 мая 2012 г., 15:11
@NikhilAgrawal, посмотрев определение вызова на MSDN. Человек не должен помнить все, просто должен помнить, чтобы посмотреть
 14 мая 2012 г., 15:09
Просто скажи мне, Джон, где ты все это помнишь?

что ваше время установлено правильно. Вторая мысль - щелкнуть правой кнопкой мыши по этой папке и посмотреть, что она говорит в свойствах. Наконец, я создаю новую папку с тестами и запускаю на ней бит тестов GetLastWriteTime, чтобы вы знали, что вы получаете.

 14 мая 2012 г., 15:17
Тогда я представляю, что строка неверна
 heinst14 мая 2012 г., 15:12
Понедельник, май

но сегодня я столкнулся с этой проблемой. Эта конкретная дата также возвращается, когда ваш путь неверен или файл не существует, поскольку в любом из этих случаев нет встроенного исключения.

Ваш ответ на вопрос