PowerShell: Datum als "serial number" (analog Excel)

tomm1984

Lt. Junior Grade
Registriert
Juni 2016
Beiträge
357
Hallo wertes Forum,

ich hätte gern Datum in PowerShell als "serial number" so, wie man / ich es von Excel kennt / kenne.

1676971579670.png


Besten Dank!
 
1676972071229.png


E: ach ne, das ist falsch herum...
 
Zuletzt bearbeitet: (E: ach ne, das ist falsch herum...)
  • Gefällt mir
Reaktionen: Raijin
Code:
PS C:\> (get-date)

Dienstag, 21. Februar 2023 10:34:59


PS C:\> (get-date).tooadate()
44978,4410009028
PS C:\>
Ergänzung ()

@kartoffelpü , ich verfluche dich, weil du eine halbe Sekunde schneller warst!!!!
 
Aber ich habe es in die falsche Richtung, du hast es ja nun richtig :)
 
  • Gefällt mir
Reaktionen: Raijin
Raijin schrieb:
Code:
PS C:\> (get-date)

Dienstag, 21. Februar 2023 10:34:59


PS C:\> (get-date).tooadate()
44978,4410009028
PS C:\>
Ergänzung ()

@kartoffelpü , ich verfluche dich, weil du eine halbe Sekunde schneller warst!!!!
cool, danke. dann schneide ich hier noch die stunden und minuten ab und dann habe ich es.

Hintergrund: das script möge jeden zweiten Tag laufen, aber an geraden Tagen Aktion X, an ungeraden Tagen Aktion Y ausführen ;)

Dankeschön
Ergänzung ()

Ergebnis:
Code:
[int](get-date).tooadate() % 2 -eq 0
 
  • Gefällt mir
Reaktionen: Raijin
Du kannst mit

Code:
(Get-Date).Date.ToOADate()

direkt nur den Datumsanteil verarbeiten, ohne Cast zu int.
 
  • Gefällt mir
Reaktionen: kartoffelpü
Ich hab mal Bing Chat gefragt ^^

1676975764695.png


und weil ich echt Langeweile habe:

1676975932757.png
 
  • Gefällt mir
Reaktionen: Evil E-Lex, Mulciber, Raijin und eine weitere Person
Ob bing wohl auch im Stil von Lothar Frohwein aus Pappa ante Portas (Loriot) antworten kann?

Krawehl, Krawehl!
 
tomm1984 schrieb:
Hintergrund: das script möge jeden zweiten Tag laufen, aber an geraden Tagen Aktion X, an ungeraden Tagen Aktion Y ausführen ;)

Dankeschön
Ergänzung ()

Ergebnis:
Code:
[int](get-date).tooadate() % 2 -eq 0
Auch wenn die gezeigte Lösung das tut was du vorhast, ist sie eher willkürlich. Jetzt ist es vom 1.1.1900 ausgehend aber wenn man Unix Zeitstempel oder den Tag des Monats oder des Jahres aus dem Datum zieht ist die Definition nicht mehr so eindeutig was gerade und ungerade ist.
 
Ich auch nicht wirklich. Klar, wenn man den Kontext ändert, kann sich auch das Ergebnis ändern bzw es wird gegebenenfalls eine andere Lösung benötigt. Danach wurde aber nicht gefragt?

So wie ich es verstanden habe sollen ganz allgemein täglich alternierend zwei Aufgaben erledigt werden und die Formulierung "gerade" bzw "ungerade" bezieht sich schlicht und ergreifend auf die Modulo-Operation, die die jeweilige Aktion auslöst. Ob das Datum nun vom 1.1.1900 an gezählt wird oder man den eigenen Geburtstag als Referenz verwendet, spielt keine Rolle - falls nötig dreht man die Modulo-Logik entsprechend um.
 
Ich hab keinen anderen Vorschlag zur Lösung, deshalb sagte ich ja: "Auch wenn die gezeigte Lösung das tut was du vorhast".
Mir ging es lediglich darum, dass die Definition
"Hintergrund: das script möge jeden zweiten Tag laufen, aber an geraden Tagen Aktion X, an ungeraden Tagen Aktion Y ausführen "
nicht nur diese gezeigte Lösung zulässt. Akademische Ungenauigkeit im Lastenheft, würde man womöglich sagen. Passiert doch regelmäßig hier und im Forum/im Job, dass etwas nicht klar/sauber definiert wird zu Beginn.

Eigentlich, wenn man den Hintergrund genau nimmt, stimmt die Lösung nichtmal.
Das Script soll jeden zweiten Tag laufen. Mit der Excel Methode also zB an den Tagen 44978, 44980, 44982, ...
dann trifft niemals zu, dass es an ungeraden Tagen etwas anderes tut. Es wird ja ohnehin nur an geraden Tagen ausgeführt. Oder ungeraden, wenn das "jeder zweite Tag" ist.
Schlichtweg würde sowas wie (Get-Date).Day die Anforderung genauso erfüllen, oder (Get-Date).DayOfYear

Nochmal, mir ging es lediglich um die Ungenauigkeit in der formulierten Anforderung nachdem dieser Hintergrund zusätzlich definiert wurde. Wenn das jetzt tut was es soll, OK, so machen. ;)
 
  • Gefällt mir
Reaktionen: Raijin
morcego schrieb:
Das Script soll jeden zweiten Tag laufen. Mit der Excel Methode also zB an den Tagen 44978, 44980, 44982, ...
dann trifft niemals zu
Das stimmt schon, aber ich gehe eher davon aus, dass @tomm1984 sich da vertippt hat. Klar, wenn das Skript nur jeden zweiten Tag läuft, läuft es entweder immer an geraden Tagen oder immer an ungeraden Tagen. Stattdessen muss das Skript natürlich täglich laufen, um jeden Tag eben die gerade oder ungerade Aktion zu starten.

Ohne vollständiges Skript (ggfs vereinfacht) ist das große Ganze natürlich entsprechend schwierig zu beurteilen, aber ich entnehme @tomm1984 Antworten, dass es für ihn so funktioniert. Ansonsten brauchen wir mehr Details.
 
Zurück
Oben