Powershell验证日期文本框

olmpazwi  于 2022-12-23  发布在  Shell
关注(0)|答案(1)|浏览(163)

我正在尝试验证Powershell中的一个文本框。它应该只允许格式dd. MM. yyyy(例如22.11.2022)。然而如果我键入一些随机字符(例如20.2),我得到的是错误而不是MessageBox。
我试过这样的方法:

if($Starttextbox.Text -as [DateTime] -or $Endtextbox.Text -as [DateTime]){
  "do something"
}else{
[System.Windows.MessageBox]::Show('Type in correct format','format','Ok','Error')
}
wz3gfoph

wz3gfoph1#

您可以创建一个小函数,并使用RegEx和Get-Date commandlet的组合,如下所示。

$StartDate = '22.12.2022' #Good
$EndDate = '22.19.2022' #Bad

function Get-ValidDate { param($DateToCheck)
    $DateToCheck -match '(\d{2})\.(\d{2})\.(\d{4})' | Out-Null
    if($matches.count -eq 4) {
        $ValidDate = $(Get-Date -Date "$($matches[2])-$($matches[1])-$($matches[3])" -Format 'dd.MM.yyyy') 2>> $NULL
    }
    if($DateToCheck -eq $ValidDate) {
        return "GoodDate"
    }
}

if((Get-ValidDate $StartDate) -and (Get-ValidDate $EndDate)) {
    Write-Host "These are Good Dates!" # DO STUFF
} else {
    Write-Host "These are Bad Dates!" # MESSAGEBOX
}

2〉〉$NULL将删除您的Get-Date错误消息,因为您要查找的只是Get-Date中的有效日期时间。函数将只返回RegEx匹配和有效日期。

相关问题