2016-06-23 5 views
0

Я знаю, что было бы невозможно сделать то, что мне нужно, но я ищу способ гарантировать, что пользователь вводит дату в правильном формате. я написал кусок кода, который может подтвердить даты, кто (день) часть DD находится между 13-31, но я борюсь с датами, которые имеют DD между 1-12Validate Data formatting powershell

напра: можно проверить эту дату 23/06/2016 и исправить ее, чтобы быть 06/23/2016 , но я не могу гарантировать, что дата 12 июня введена правильно. , если кто-то введет 12/06/2016, это по определению действительная дата, но не та, которая мне нужна (06/12/2016), и я не могу быть уверен, что дата такова, что я намеревался это быть

если кто может мольбы мне точку решение будет высоко оценено

, если это делает никакой разницы, это мой код:

$Date = $args[0] 
$Time = $args[1] 

try 
{ 
    $tmpDate = $Date +" " +$Time 
    [DateTime]$UserDate = $tmpDate 
} 
catch 
{ 
    $tmp = $Date 
    $tmp -match "(?<d>.*)/(?<m>.*)/(?<y>.*)">$null 
    $_Date = $matches['m']+"/"+$matches['d']+"/"+$matches['y'] 
    $tmpDate = $_Date +" " +$Time 
    try 
    { 
     [DateTime]$UserDate = $tmpDate 
    } 

    catch 
    { 
     write-host "Error: The Given Date was not recognized as a valid Date, Please Try again" -ForegroundColor Red 
     Exit 808040 
    } 


} 

ответ

0

путь большинство программ работы является то, что они просят, чтобы пользователь введите дату в приемлемом формате. Отображение чего-то вроде YYYY/MM/DD рядом с полем ввода или подсказкой поможет пользователю понять, какая программа примет. Затем, независимо от введенного вами пользователя, вы можете отдельно проверить каждую часть и предупредить пользователя, если какая-либо часть даты неверна.

+0

проблема заключается не в том, что я не могу сообщить пользователю о ожидаемом вводе, есть большой тег, в котором указано, что им нужно вводить, но люди иногда даже не дают ***** о том, что они нужно делать и как я должен быть готов к любым ошибкам, которые могут произойти. во всяком случае, моя борьба, как я уже упоминал, заключается в том, что 12/06/2016 - это действительная дата, и я не могу проверить форматирование в этом случае. – Ori

+0

Все еще актуально. – Ori