Forum Discussion

Andre Radtke's avatar
Andre Radtke
Brass Contributor
Jan 26, 2022
Solved

Convert a text string to a correct date time format

Hello folks,

 

I have maybe a simple question for the experienced people around here πŸ™‚ . I have a runbook in azure that is getting the field "CreatedDateTime" of a unified group (Teams Team). The format of this field ist like the following "2020-08-06T06:03:19Z". This is not recognized as a valid DateTime format by the cmdlet:

$DateTime=[Datetime]::ParseExact($DateTime'MM/dd/yyyy'$null)
 
Can anyone point me to a solution how to get the string "2020-08-06T06:03:19Z" into a string like "2020-08-06" or "06-08-2020". Every hint is appreciated.
 
Thank you all πŸ˜‰
  • sorry, I left the " | Get-Member " to show you that the type returned is a Date type. remove that to integrate into your own script
  • Look like Get-Date will return a string that can be converted to a date:

     

    [datetime](get-date('2020-08-06T06:03:19Z')) | get-member -MemberType Properties

    [Edit] Actually just noticed the flaw with your script sample - you need to provide the date format that the incoming string is in so that ParseExact is receiving

    $DateTime=[Datetime]::ParseExact($str, 'yyyy-MM-ddTHH:mm:ssZ', $null)

     

    • Andre Radtke's avatar
      Andre Radtke
      Brass Contributor

      Jonathan_Allen 

      thank you for your reply, but it does not help me at the moment because all it gives me back is the following:

      PS C:\WINDOWS\system32> [datetime](get-date('2020-08-06T06:03:19Z')) | get-member -MemberType Properties


      TypeName: System.DateTime

      Name MemberType Definition
      ---- ---------- ----------
      Date Property datetime Date {get;}
      Day Property int Day {get;}
      DayOfWeek Property System.DayOfWeek DayOfWeek {get;}
      DayOfYear Property int DayOfYear {get;}
      Hour Property int Hour {get;}
      Kind Property System.DateTimeKind Kind {get;}
      Millisecond Property int Millisecond {get;}
      Minute Property int Minute {get;}
      Month Property int Month {get;}
      Second Property int Second {get;}
      Ticks Property long Ticks {get;}
      TimeOfDay Property timespan TimeOfDay {get;}
      Year Property int Year {get;}
      DateTime ScriptProperty System.Object DateTime {get=if ((& { Set-StrictMode -Ver...

       

      What I needed was a correct format as described. I solved it my way by cutting the last characters with this: 

      $CreatedDate.Remove(10,10)

      itΒ΄s not smart but for now it will be enough for me πŸ˜‰

      • Jonathan_Allen's avatar
        Jonathan_Allen
        Brass Contributor
        sorry, I left the " | Get-Member " to show you that the type returned is a Date type. remove that to integrate into your own script

Resources