Benutzer mit den meisten Antworten
Dateidatum ohne Zeitangabe vergleichen

Frage
-
Hallo Leute,
ich benutze folgenden Code, um abzugleichen, ob sich die Datei am heutigen Datum verändert hat. So kann das allerdings nicht funktionieren, da die Zeitkomponente eine Rolle spielt. Soll sie aber nicht. Wie könnte man den Code abändern, damit nur das Datum eine Rolle spielt? Intuitiv würde ich es durch String.Split() mit dem Leerzeichen als Trenner, dann das jeweils erste Arrayelement machen, aber das erscheint mir als zu aufwendig. Geht's auch eleganter?
private bool hasBatchBeenCalled() { try { CultureInfo culture = new CultureInfo("de-DE"); DateTime localDate = DateTime.Now; string dateToday = localDate.ToString(culture), frickeFile = PathForPictures + @"comon\errfilet.vor"; //PathForPictures enthält den Pfad zu daten$(I:) if(File.Exists(frickeFile)) { _logger.Debug("{0} exists in {1}", frickeFile, PathForPictures); FileInfo fi = new FileInfo(frickeFile); DateTime creationTime = fi.CreationTime; DateTime accessTime = fi.LastAccessTime; DateTime changeTime = fi.LastWriteTime; string strCreationTime = creationTime.ToString(culture); string strAccessTime = accessTime.ToString(culture); string strChangeTime = changeTime.ToString(culture); if(strCreationTime == dateToday || strAccessTime == dateToday || strChangeTime == dateToday) { _logger.Debug("Modification date of {0} seems to be of todays date:{1}", frickeFile, dateToday); } else { _logger.Debug("Modification date of {0} doesn not seem of todays date:{1}", frickeFile, dateToday); } } else { _logger.Debug("{0} doesn't exist in {1}", frickeFile, PathForPictures); } } catch(Exception er) { _logger.Error(er.Message + Environment.NewLine + er.ToString()); } return true; }
Uneleganter Weg:
char[] delimiters = new char[] { ' '}; string[] arrayOfDateToday = dateToday.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); dateToday = arrayOfDateToday[0]; . . .
- Bearbeitet tklustig Dienstag, 25. Juni 2019 09:06
- Verschoben Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 26. Juni 2019 10:57 Die Frage ist nicht auf die Express-Editionen beschränkt (aus: Visual Studio Express Editionen)
Antworten
-
Hi,
if( fi.LastWriteTime >= DateTime.Today ) { ... }
Datumswerte in Strings umzuwandeln um die dann irgendwie zu vergleichen ist wahrscheinlich so ziemlich die schlechteste Idee überhaupt^^
Die DateTime Klasse bietet für deine Zwecke auch die Date Eigenschaft um nur das Datum ohne Uhrzeit abzurufen.
if( fi.LastWriteTime.Date == DateTime.Today ) { ... }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan FalzModerator Dienstag, 25. Juni 2019 09:19
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 10:31
- Als Antwort markiert tklustig Sonntag, 30. Juni 2019 11:17
-
Hi,
wie Stefan schon schrieb, geht das alles viel kürzer:… CultureInfo culture = new CultureInfo("de-DE"); frickeFile = PathForPictures + @"comon\errfilet.vor"; //PathForPictures enthält den Pfad zu daten$(I:) if(File.Exists(frickeFile)) { _logger.Debug("{0} exists in {1}", frickeFile, PathForPictures); FileInfo fi = new FileInfo(frickeFile); if(fi.CreationTime.Date == DateTime.Now.Date || fi.LastAccessTime.Date == DateTime.Now.Date || fi.LastWriteTime.Date == DateTime.Now.Date) { ...
--
Best Regards / Viele Grüße
Peter Fleischer (former MVP for Developer Technologies)
Homepage, Tipps, Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 10:31
- Als Antwort markiert tklustig Sonntag, 30. Juni 2019 11:17
Alle Antworten
-
Hi,
if( fi.LastWriteTime >= DateTime.Today ) { ... }
Datumswerte in Strings umzuwandeln um die dann irgendwie zu vergleichen ist wahrscheinlich so ziemlich die schlechteste Idee überhaupt^^
Die DateTime Klasse bietet für deine Zwecke auch die Date Eigenschaft um nur das Datum ohne Uhrzeit abzurufen.
if( fi.LastWriteTime.Date == DateTime.Today ) { ... }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan FalzModerator Dienstag, 25. Juni 2019 09:19
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 10:31
- Als Antwort markiert tklustig Sonntag, 30. Juni 2019 11:17
-
Hi,
wie Stefan schon schrieb, geht das alles viel kürzer:… CultureInfo culture = new CultureInfo("de-DE"); frickeFile = PathForPictures + @"comon\errfilet.vor"; //PathForPictures enthält den Pfad zu daten$(I:) if(File.Exists(frickeFile)) { _logger.Debug("{0} exists in {1}", frickeFile, PathForPictures); FileInfo fi = new FileInfo(frickeFile); if(fi.CreationTime.Date == DateTime.Now.Date || fi.LastAccessTime.Date == DateTime.Now.Date || fi.LastWriteTime.Date == DateTime.Now.Date) { ...
--
Best Regards / Viele Grüße
Peter Fleischer (former MVP for Developer Technologies)
Homepage, Tipps, Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 28. Juni 2019 10:31
- Als Antwort markiert tklustig Sonntag, 30. Juni 2019 11:17