Дата Форматы не связаны с вашей проблемой : до тех пор, пока [DateTime]::Parse($fecha)
преобразует входные данные пользователя в экземпляр [datetime]
, арифметика даты и времени .NET будет работатькак и ожидалось (и предоставление GUI-метода для пользователя, чтобы выбрать дату, может быть полезно, но аналогично непредвиденной проблеме).
Реальная проблема заключается в том, что *Time*
свойства в [System.IO.FileInfo]
и [System.IO.DirectoryInfo]
экземплярах, выводимых Get-ChildItem
, являются конкретные моменты времени , то есть они отражают дату, а также время дня , поэтому с использованием -eq
для сравнения их с отметками календарного дня отметками времени , так как что-то вроде [datetime]::Parse('2018-12-31')
вернет [1] , будет не работать должным образом .
Для доступа только к части date (самому start календарного дня) экземпляра [datetime]
, используйте свойство .Date
:
Get-ChildItem "$root\UNB\FINAL_TEXTO" -Filter *.txt |
Where-Object { $_.CreationTime.Date -eq [DateTime]::Parse($fecha) }
Обратите внимание, что поскольку требуется вложенный доступ к свойству, scДля выражения необходимо использовать блок ript .
Конечно, предпочтительно предварительно проанализировать ввод пользователя как строку , чтобы увидеть, представляет ли она действительную дату: убедитесь, что $refDate = [DateTime]::Parse($fecha)
не выдает исключение;если это так, повторите запрос.
[1] Обратите внимание, что [datetime]::Parse('<date-string>')
использует культуру current для анализа строки, тогда как [datetime] '<date-string>'
будет использовать инвариант культура.