Мне нужно динамически изменить часть даты в различных URL-адресах для целей веб-копирования. И дата, и форматирование должны быть переменными.
Например, сегодня я могу запросить:
www.website.com/?startdate=2020-01-01&enddate=2020-01-02
Тогда как завтра я может потребоваться:
www.website.com/?startdate=2020-01-02&enddate=2020-01-03
Мое текущее решение заключается в передаче следующего формата моему сценарию в качестве параметра:
www.website.com/?startdate= <- 1, гггг-ММ-дд> & enddate = <0, гггг-ММ-дд>
Где часть слева от запятой - это день, который мне нужен, а часть до право - это его форматирование.
Я использую следующий скрипт для получения моего результата:
$url = "www.website.com/?startdate=<-1,yyyy-MM-dd>&enddate=<0,yyyy-MM-dd>"
$urlsplit = $url.Split("<>") | Where-Object {$_}
Switch ($urlsplit.Length)
{
1 {
$result = $url
}
2 {
$dayone = $urlsplit[1].Split(",")[0]
$formatone = $urlsplit[1].Split(",")[1]
$result = $urlsplit[0] + ((Get-Date).AddDays($dayone).ToString($formatone))
}
4 {
$dayone = $urlsplit[1].Split(",")[0]
$daytwo = $urlsplit[3].Split(",")[0]
$formatone = $urlsplit[1].Split(",")[1]
$formattwo = $urlsplit[3].Split(",")[1]
$result = $urlsplit[0] + ((Get-Date).AddDays($dayone).ToString($formatone)) + $urlsplit[2] + ((Get-Date).AddDays($daytwo).ToString($formattwo))
}
}
Write-Output $result
URL могут не содержать дату, одну дату или две (как указано выше). Вот почему мне сейчас нужен оператор switch.
Можно ли сделать это проще?