[英]Convert String to Date using PowerShell
我有以下格式的日期作為字符串:
July 27th, 2016
December 3rd, 2014
August 1st, 1998
March 2nd, 1979
如何使用PowerShell將日期轉換為以下日期
2016-07-27
2014-12-03
1998-08-01
1979-03-02
我會選擇帶有某些正則表達式的ParseExact()
來刪除所有的th,rd和st。 比起您只需要在ToString()
使用正確的格式
編輯根據@JosefZ建議更新代碼。
foreach ($date in @(
'July 27th, 2016'
'December 3rd, 2014'
'August 1st, 1998'
'March 2nd, 1979'
)) {
$clean = $date -replace '(st|nd|rd|th),'
$dateObject = [datetime]::ParseExact($clean, 'MMMM d yyyy', [System.Globalization.CultureInfo]::InvariantCulture)
# Apparently, this works too ...
$dateObject = [datetime]$clean
$dateObject.ToString('yyyy-MM-dd')
}
我沒有足夠的代表來評論BartekB的解決方案,因此這只是他的回答的次要regex替代方案。
foreach ($oldformat in @(
'July 27th, 2016'
'December 3rd, 2014'
'August 1st, 1998'
'March 2nd, 1979')
)
{
$newformat = [datetime][regex]::replace($oldformat,' *..,',"") | Get-Date -Format "yyyy-MM-dd"
Write-Host $newformat
}
除了@ Andrii-Matus,@ BartekB所示的方法外,以下是實現同一目標的另一種方法。
$date_str = @(
'July 27th, 2016'
'December 3rd, 2014'
'August 1st, 1998'
'March 2nd, 1979'
)
foreach ($date in $date_str){
$newformat = $date -replace '(st|nd|rd|th),'
get-date $newformat -UFormat "%Y-%m-%d"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.