Как устранить ошибку «Строка не распознана как действительный DateTime»? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть три переменные типа даты, переданные из командного файла в виде строк. Когда они переходят к сценарию PS, они видятся как:

  • 20190710 112538

  • 20190710 112538

  • 20190710

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь их проанализировать, я получаю сообщение об ошибке, в котором говорится, что строка не распознается как допустимый DateTime.

Я пытался изменить культуру на инвариантную и без разницы. Я уверен, что что-то упустил. Могу ли я получить помощь в успешном разборе этих строк?

Значения, отправленные отсюда:

set YYYY=%DATE:~-4%
set MM=%DATE:~4,2%
set DD=%DATE:~7,2%
set HH=%time:~0,2%
set NN=%time:~3,2%
set SS=%time:~6,2%
set MS=%time:~9,2%
SET "_oStart=%YYYY%%MM%%DD% %HH%%NN%%SS%%MS%" 

SET "_PSScript=C:\xx\xx.ps1"
SET "_oEnd=%YYYY%%MM%%DD% %HH%%NN%%SS%%MS%" 
SET "_oDateRan=%YYYY%%MM%%DD%"
SET "_PSCMD=Powershell -ExecutionPolicy Bypass -File "%_PSScript%" -oStart "%_oStart%" -oEnd "%_oEnd%" -oDateRan "%_oDateRan%"
Param(
    [String]$oStart,
    [String]$oEnd,
    [String]$oDateRan
)

[DateTime]$DateRan = [DateTime]::ParseExact($oDateRan, "yyyyMMdd", $null)
[DateTime]$StartTime = [DateTime]::ParseExact($oStart, "yyyyMMdd HHmmssff", $null)
[DateTime]$End = [DateTime]::ParseExact($oEnd, "yyyyMMdd HHmmssff", $null)

Сообщение об ошибке:

Exception calling "ParseExact" with "3" argument(s): "String was not
recognized as a valid DateTime."
...