title: How do I parse a date in PowerShell?
body: <p>I write a script that removes backups older than five days. I check it by the name of the directory and not the actual date.</p>
  
  <p>How do parse the directory name to a date to compare them?</p>
  
  <p>Part of my script:</p>
  
  <pre><code>...
  
  foreach ($myDir in $myDirs)
  {
    $dirName=[datetime]::Parse($myDir.Name)
    $dirName= '{0:dd-MM-yyyy}' -f $dirName
    if ($dirName -le "$myDate")
    {
          remove-item $myPath\$dirName -recurse
    }
  }
  ...
  </code></pre>
  
  <p>Maybe I do something wrong, because it still does not remove last month's directories.</p>
  
  <p>The whole script with Akim's suggestions is below:</p>
  
  <pre><code>Function RemoveOldBackup([string]$myPath)
  {
  
    $myDirs = Get-ChildItem $myPath
  
    if (Test-Path $myPath)
    {
      foreach ($myDir in $myDirs)
      {
        #variable for directory date
        [datetime]$dirDate = New-Object DateTime
  
        #check that directory name could be parsed to DateTime
        if([datetime]::TryParse($myDir.Name, [ref]$dirDate))
        {
              #check that directory is 5 or more day old
              if (([DateTime]::Today - $dirDate).TotalDays -ge 5)
              {
                    remove-item $myPath\$myDir -recurse
              }
        }
      }
    }
    Else
    {
      Write-Host "Directory $myPath does not exist!"
    }
  }
  
  RemoveOldBackup("E:\test")
  </code></pre>
  
  <p>Directories names are, for example, 09-07-2012, 08-07-2012, ..., 30-06-2012, and 29-06-2012.</p>