簡體   English   中英

使用PowerShell將字符串轉換為日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM