我有以下資料,這是一個名為 $timestamps 的物件型別變數
Sat Jan 15 16:21:24
Sat Jan 15 01:31:22
Fri Jan 14 20:58:09
Fri Jan 14 20:51:02

由于奇怪的日期格式,我無法將其轉換為 Datetime 物件。你會怎么處理這個?
我希望它作為日期時間物件,因為我計劃從當前(UTC)轉換為 EST。
TIA
uj5u.com熱心網友回復:
您可以為此使用該類ParseExact()提供的方法:[datetime]
[datetime]::ParseExact('Fri Jan 14 20:58:09','ddd MMM dd HH:mm:ss',$null)
# returns a - datetime - object of:
# Friday, January 14, 2022 8:58:09 PM
- dd - 當天。
- MM - 本月。
- HH - 小時 - 大寫的 24 小時時間格式。
- 毫米- 分鐘。
- ss - 秒。
編輯:正如mklement0所建議的,我們可以使用[cultureinfo]::InvariantCulture特定于英文日期時間格式的決議。此外,對于沒有 2 位數字的日子,將dd更改為d作為更強大的解決方案;這應該涵蓋單數天和兩位數天。
Seeing$timestamps是一個字串陣列,您可以使用回圈(您選擇 - 在本例中為cmdlet)來遍歷每個字串,決議文本以回傳一個物件:Foreach-Objectdatetime
$timestamps | ForEach-Object {
$culture = [cultureinfo]::InvariantCulture
$format = 'ddd MMM d HH:mm:ss'
$date = [datetime]::ParseExact($_,$format,$culture,'AssumeUniversal, AdjustToUniversal')
[System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId($date, 'Eastern Standard Time')
}
- 使用
'AssumeUniversal, AdjustToUniversal'確保 UTC 輸出。
假設您希望轉換為東部時間,將新創建的datetime物件[System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId()與所需時區的引數一起傳遞給您的評論,您可以在新時區中獲得結果。
使用時$null,使用與當前區域性對應的CultureInfo物件。
uj5u.com熱心網友回復:
該DateTime.ParseExact()方法可能是您正在尋找的。
PS C:\TEMP>$timestamp = 'Sat Jan 15 16:21:24'
PS C:\TEMP>$format = 'ddd MMM dd HH:mm:ss'
PS C:\TEMP>[datetime]::ParseExact($timestamp, $format, $null)
Saturday, January 15, 2022 04:21:24 PM
PS C:\TEMP>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/412539.html
標籤:
