距离下一个生日还有多少天
Number of days until next birthday
我的问题是计算下一个生日的天数。
我已经输入和计算了,但是日期的格式是错误的。
我希望我的程序使用以下格式计算您的下一个生日天数:DD.MM.YYYY
且不带小数。此外,当我输入 "hello" 之类的内容时,它不应该崩溃,但会给我一个错误,指出它不是有效日期。
#Clearing
Clear-Host
#Liste von Variabeln
$geburtstag
$datumvonheute
$zeitbisgeburtstag
#initialisieren von Variabeln
$geburtstag = Get-Date
$datumvonheute = Get-Date
$zeitbisgeburtstag = ""
function ParseDate([string]$datumvonheute)
{
try{
$result = 0
if (!([DateTime]::TryParse($datumvonheute, [ref]$result)))
{
throw "Es wurde ein falsches Datum eingegeben! $geburtstag"
}
$isok = $true
$geburtstag.ToDateTime($geburtstag)
} catch {
$result
Write-Host "Falsche Eingabe!"
$isok = $false
}
}
do{
$geburtstag = Read-Host "Bitte geben Sie ihren nächsten Geburtsdatum ein [dd.mm.yyyy]"
ParseDate($geburtstag)
} until($isok = $true)
$FromDate =[DateTime] $datumvonheute
$ToDate =[DateTime] $geburtstag
($ToDate - $FromDate).TotalDays
由于多种原因,您的格式日期可能是错误的,但我假设这是因为文化不一样:在您的笔记本电脑上它可能是 en-US 文化 (MM/dd/yyyy) , 而您输入的日期格式是 de-de culture (dd/MM/yyyy).
您可以在开始时定义文化,然后使用它根据您的需要进行适当设置。
$cultureInfo = New-Object System.Globalization.CultureInfo('de-de')
你的问题在这里:
$geburtstag.ToDateTime($geburtstag)
您需要对其进行解析以获得正确的日期:
$geburtstag = [datetime]::Parse($datumvonheute,$cultureInfo)
我会计算 $fromDate - $toDate
,反之亦然
#Clearing
Clear-Host
$cultureInfo = New-Object System.Globalization.CultureInfo('de-de')
#Liste von Variabeln
$geburtstag
$datumvonheute
$zeitbisgeburtstag
#initialisieren von Variabeln
$geburtstag = Get-Date
$datumvonheute = Get-Date
$zeitbisgeburtstag = ""
function ParseDate([string]$datumvonheute)
{
try{
$result = 0
if (!([DateTime]::TryParse($datumvonheute, [ref]$result)))
{
throw "Es wurde ein falsches Datum eingegeben! $geburtstag"
}
$isok = $true
#$geburtstag.ToDateTime($geburtstag)
$geburtstag = [datetime]::Parse($datumvonheute,$cultureInfo)
} catch {
$result
Write-Host "Falsche Eingabe!"
$isok = $false
}
}
do{
$geburtstag = Read-Host "Bitte geben Sie ihren nächsten Geburtsdatum ein [dd.mm.yyyy]"
ParseDate($geburtstag)
} until($isok = $true)
$FromDate =[DateTime] $datumvonheute
$ToDate =[DateTime] $geburtstag
$totaldays = ($FromDate - $ToDate).Days
Write-Output "Total Days: $totaldays"
我的问题是计算下一个生日的天数。
我已经输入和计算了,但是日期的格式是错误的。
我希望我的程序使用以下格式计算您的下一个生日天数:DD.MM.YYYY
且不带小数。此外,当我输入 "hello" 之类的内容时,它不应该崩溃,但会给我一个错误,指出它不是有效日期。
#Clearing
Clear-Host
#Liste von Variabeln
$geburtstag
$datumvonheute
$zeitbisgeburtstag
#initialisieren von Variabeln
$geburtstag = Get-Date
$datumvonheute = Get-Date
$zeitbisgeburtstag = ""
function ParseDate([string]$datumvonheute)
{
try{
$result = 0
if (!([DateTime]::TryParse($datumvonheute, [ref]$result)))
{
throw "Es wurde ein falsches Datum eingegeben! $geburtstag"
}
$isok = $true
$geburtstag.ToDateTime($geburtstag)
} catch {
$result
Write-Host "Falsche Eingabe!"
$isok = $false
}
}
do{
$geburtstag = Read-Host "Bitte geben Sie ihren nächsten Geburtsdatum ein [dd.mm.yyyy]"
ParseDate($geburtstag)
} until($isok = $true)
$FromDate =[DateTime] $datumvonheute
$ToDate =[DateTime] $geburtstag
($ToDate - $FromDate).TotalDays
由于多种原因,您的格式日期可能是错误的,但我假设这是因为文化不一样:在您的笔记本电脑上它可能是 en-US 文化 (MM/dd/yyyy) , 而您输入的日期格式是 de-de culture (dd/MM/yyyy).
您可以在开始时定义文化,然后使用它根据您的需要进行适当设置。
$cultureInfo = New-Object System.Globalization.CultureInfo('de-de')
你的问题在这里:
$geburtstag.ToDateTime($geburtstag)
您需要对其进行解析以获得正确的日期:
$geburtstag = [datetime]::Parse($datumvonheute,$cultureInfo)
我会计算 $fromDate - $toDate
,反之亦然
#Clearing
Clear-Host
$cultureInfo = New-Object System.Globalization.CultureInfo('de-de')
#Liste von Variabeln
$geburtstag
$datumvonheute
$zeitbisgeburtstag
#initialisieren von Variabeln
$geburtstag = Get-Date
$datumvonheute = Get-Date
$zeitbisgeburtstag = ""
function ParseDate([string]$datumvonheute)
{
try{
$result = 0
if (!([DateTime]::TryParse($datumvonheute, [ref]$result)))
{
throw "Es wurde ein falsches Datum eingegeben! $geburtstag"
}
$isok = $true
#$geburtstag.ToDateTime($geburtstag)
$geburtstag = [datetime]::Parse($datumvonheute,$cultureInfo)
} catch {
$result
Write-Host "Falsche Eingabe!"
$isok = $false
}
}
do{
$geburtstag = Read-Host "Bitte geben Sie ihren nächsten Geburtsdatum ein [dd.mm.yyyy]"
ParseDate($geburtstag)
} until($isok = $true)
$FromDate =[DateTime] $datumvonheute
$ToDate =[DateTime] $geburtstag
$totaldays = ($FromDate - $ToDate).Days
Write-Output "Total Days: $totaldays"