Datums vergleich
Hallo liebe Community,
hab da mal eine Frage zum Datums vergleich.
Ich möchte prüfen, ob das Änderungsdatum einer Datei länger als 15h seit dem Start her ist.
Hierfür habe ich mir folgendes überlegt.
leider kann ich das ganze nicht so vergleichen, wie ich es gerne wollen würde.
Mir wird kein Fehler ausgegeben, nur das Ergebnis ist nicht das, womit man rechnen würde. Ich habe das Gefühl, dass das Datum relativ ist und nur die Uhrzeit verglichen wird.
Weiß jemand genau was hier an dieser Stelle passiert? Beide Werte haben das Format dd.MM.yyyy HH:mm:ss
lassen sich aber leider nicht richtig miteinander vergleichen.
Alternativen sind sehr gerne gesehen!
Danke im Voraus.
hab da mal eine Frage zum Datums vergleich.
Ich möchte prüfen, ob das Änderungsdatum einer Datei länger als 15h seit dem Start her ist.
Hierfür habe ich mir folgendes überlegt.
$aktuelleDatei ="C:\test\test.exe"
#folgendes Datum wird Stunden vor der if-Schleife Initialisiert
$Day = Get-Date
....
$lastwritetime1 = (Get-ItemProperty $aktuelleDatei -Name LastWriteTime).LastWriteTime
if((New-TimeSpan -Start $Day -End $lastwritetime1 ).Hours -gt 15 )
etc.
leider kann ich das ganze nicht so vergleichen, wie ich es gerne wollen würde.
Mir wird kein Fehler ausgegeben, nur das Ergebnis ist nicht das, womit man rechnen würde. Ich habe das Gefühl, dass das Datum relativ ist und nur die Uhrzeit verglichen wird.
Weiß jemand genau was hier an dieser Stelle passiert? Beide Werte haben das Format dd.MM.yyyy HH:mm:ss
lassen sich aber leider nicht richtig miteinander vergleichen.
Alternativen sind sehr gerne gesehen!
Danke im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 589707
Url: https://administrator.de/forum/datums-vergleich-589707.html
Ausgedruckt am: 17.04.2025 um 23:04 Uhr
6 Kommentare
Neuester Kommentar
Moin,
bin kein Powersheller (leider, aber kommt noch), aber mal vom Grundsatz:
Windows (und eigentlich alle anderen Systeme) rechnen ohnehin nur in Zeiten, nämlich in aller Regel in Sekunden, beginnend beim 01.01.1900.
Für ein "Debugging" würde ich mir ja mal beide Zeitstempel so wie sie sind irgendwo anzeigen lassen, um zu sehen, ob die Werte augenscheinlich überhaupt einem Datum/ Zeitstempel entsprechen.
Dann würde ich sicherstellen, dass beide Werte auch vom Typ datetime sind, bevor ich mit einem Vergleich beginne:
https://www.msxfaq.de/code/powershell/psdatetime.htm
Und dann gäbe es da noch die verschiedene Wege der Prüfung:
Man könnte z.B. vom aktuellen Zeitstempel (Zeile 9) 15h abziehen und dann prüfen, ob dein $Day < denn dein $lastwritetime1 ist...
Wie gesagt, bin kein PowerShell-Kenner/ Könner, aber das wären jetzt meine "logischen" Ansätze
Edit: das habe ich gerade noch gefunden:
Quelle: https://stackoverflow.com/questions/16613656/how-can-i-check-if-a-file-i ...
Gruß
em-pie
bin kein Powersheller (leider, aber kommt noch), aber mal vom Grundsatz:
Windows (und eigentlich alle anderen Systeme) rechnen ohnehin nur in Zeiten, nämlich in aller Regel in Sekunden, beginnend beim 01.01.1900.
Für ein "Debugging" würde ich mir ja mal beide Zeitstempel so wie sie sind irgendwo anzeigen lassen, um zu sehen, ob die Werte augenscheinlich überhaupt einem Datum/ Zeitstempel entsprechen.
Dann würde ich sicherstellen, dass beide Werte auch vom Typ datetime sind, bevor ich mit einem Vergleich beginne:
https://www.msxfaq.de/code/powershell/psdatetime.htm
Und dann gäbe es da noch die verschiedene Wege der Prüfung:
Man könnte z.B. vom aktuellen Zeitstempel (Zeile 9) 15h abziehen und dann prüfen, ob dein $Day < denn dein $lastwritetime1 ist...
Wie gesagt, bin kein PowerShell-Kenner/ Könner, aber das wären jetzt meine "logischen" Ansätze
Edit: das habe ich gerade noch gefunden:
$lastWrite = (get-item $fullPath).LastWriteTime
$timespan = new-timespan -days 5 -hours 10 -minutes 5
if (((get-date) - $lastWrite) -gt $timespan) {
# older
} else {
# newer
}
Quelle: https://stackoverflow.com/questions/16613656/how-can-i-check-if-a-file-i ...
Gruß
em-pie
Hi,
Erstens
Zweitens
"mehr als 15 Stunden alt" ist ungleich "Änderungsdatum einer Datei länger als 15h seit dem Start her"
"mehr als 15 Stunden alt" wäre z.B.
"Datei länger als 15h seit dem Start her"
Hier muss man erstmal die letzte Startzeit des Computers herausbekommen und dann damit vergleichen.
E.
Edit
Erstens
$FileDatetime = (Get-ChildItem $aktuelleDatei).LastWriteTime # viel einfacher
"mehr als 15 Stunden alt" ist ungleich "Änderungsdatum einer Datei länger als 15h seit dem Start her"
"mehr als 15 Stunden alt" wäre z.B.
If((Get-ChildItem $aktuelleDatei).LastWriteTime -lt (Get-Date).AddHours(-15)) {
# Datei älter als 15h
}
If((Get-ChildItem $aktuelleDatei).LastWriteTime -gt (Get-Date).AddHours(-15)) {
# Datei innerhalb der letzten 15h
}
Hier muss man erstmal die letzte Startzeit des Computers herausbekommen und dann damit vergleichen.
E.
Edit
$LastBootTime = [datetime](gcim Win32_OperatingSystem).LastBootUpTime
If((Get-ChildItem $aktuelleDatei).LastWriteTime.AddHours(-15) -gt $LastBootTime) {
# Datei jünger als 15h nach der Startzeit
}
Zitat von @emeriks:
"Datei länger als 15h seit dem Start her"
Hier muss man erstmal die letzte Startzeit des Computers herausbekommen und dann damit vergleichen.
"Datei länger als 15h seit dem Start her"
Hier muss man erstmal die letzte Startzeit des Computers herausbekommen und dann damit vergleichen.
Die Frage ist, ob mit "seit dem letzten Start" die Startzeit des OS oder die Startzeit des Scripts gemeint ist!?
Da muss der TO mal noch nachliefern.