none
Fehler bei der Übergabe eines Datums: String was not recognized as a valid DateTime RRS feed

  • Frage

  • Hallo zusammen,

    folgende Situation:

    Ich möchte ein Datum aus einer CSV Datei auslesen und dieses 30 Tage in die Zukunft setzen.

    Zuerst lese ich die CSV Datei aus und setze es in eine foreach Schleife.

    $Benutzer=Import-Csv-Path"c:\Beispiel.csv"-Delimiter';'


    ForEach

    ($Userin$Benutzer)

            {

      

              

    $Benutzername=$User.Benutzername

              

    $Loeschdatum=$user.Loeschdatum

              

    $LoeschDatum2=[datetime]::ParseExact($Loeschdatum,'dd/MM/yyyy',$null).AddDays(30)

              

    Write-Host"$Benutzername"


              

    Write-Host"$Loeschdatum"


               }

    Und hier kommt der oben genannte Fehler.

    . Das Datum ist Beispielsweise :"26.02.2017". Wenn ich allerdings die Übergabe ansehe, sehe ich, dass hier die Variable $Loeschdatum mit 00:00:00 endet, also 26.02.2017 00:00:00

    Habt ihr eine Idee?

    Viele Grüße

    Tim


    Donnerstag, 3. August 2017 05:06

Antworten

  • Hallo Tim

    Dein Problem hier ist mit grosser Wahrscheinlichkeit die Variable $Loeschdatum. Wenn in deinem CSV-File das Löschdatum mit z.B. 26.02.2017 angibst, wird dabei offensichtlich noch irgendwo ein Leerzeichen mitgegeben (ich vermute mal beim Konvertieren in das DateTime-Objekt). Deine Zeile mit $Loeschdatum2 sollte folgendermassen lauten: 

    $date2 = [datetime]::ParseExact($date1.Trim(),'dd/MM/yyyy',$null).AddDays(30)

    Das .Trim() entfernt zusätzliche Leerzeichen und Abstände. Probiere das mal aus ob es bei dir funktioniert. 

    Gruss
    Fahiko

    Donnerstag, 3. August 2017 07:01

Alle Antworten

  • Hallo zusammen,

    folgende Situation:

    Ich möchte ein Datum aus einer CSV Datei auslesen und dieses 30 Tage in die Zukunft setzen.

    Zuerst lese ich die CSV Datei aus und setze es in eine foreach Schleife.

    $Benutzer=Import-Csv-Path"c:\Beispiel.csv"-Delimiter';'


    ForEach

    ($Userin$Benutzer)

            {

      

              

    $Benutzername=$User.Benutzername

              

    $Loeschdatum=$user.Loeschdatum

              

    $LoeschDatum2=[datetime]::ParseExact($Loeschdatum,'dd/MM/yyyy',$null).AddDays(30)

              

    Write-Host"$Benutzername"


              

    Write-Host"$Loeschdatum"


               }

    Und hier kommt der oben genannte Fehler.

    Mir scheint, dass die Shell hier ein Objekt erwartet und keinen String. Das Datum ist Beispielsweise :"26.02.2017"

    Habt ihr eine Idee?

    Viele Grüße

    Tim

    Donnerstag, 3. August 2017 05:19
  • Hallo zusammen,

    ich habe den Fehler in der CSV Datei gefunden. Hier werden ein paar leere Zeilen interpretiert. Deswegen ist bei der ForEach Schleife dann der Fehler aufgetreten, da das Objekt im Array ja $Null war.

    Donnerstag, 3. August 2017 07:01
  • Hallo Tim

    Dein Problem hier ist mit grosser Wahrscheinlichkeit die Variable $Loeschdatum. Wenn in deinem CSV-File das Löschdatum mit z.B. 26.02.2017 angibst, wird dabei offensichtlich noch irgendwo ein Leerzeichen mitgegeben (ich vermute mal beim Konvertieren in das DateTime-Objekt). Deine Zeile mit $Loeschdatum2 sollte folgendermassen lauten: 

    $date2 = [datetime]::ParseExact($date1.Trim(),'dd/MM/yyyy',$null).AddDays(30)

    Das .Trim() entfernt zusätzliche Leerzeichen und Abstände. Probiere das mal aus ob es bei dir funktioniert. 

    Gruss
    Fahiko

    Donnerstag, 3. August 2017 07:01
  • Warum gibst du "/" als Format vor, wenn doch ein "." vorkommt?
    Also a) per Substring() auf 8 Stellen kürzen und b) als Format "dd.MM.yyyy" vorgeben.
    Donnerstag, 3. August 2017 09:08