在PowerShell中将字符串转换为datetime

问题描述 投票:14回答:4

我正在使用PowerShell尝试将字符串转换为日期时间。应该很容易,对吗?

我从CSV导入中获取字符串,它的格式为Jul-16。我已经尝试了多种方式将它变成我想要的格式,这是yyyy-MM-dd,我目前在下面。

$invoice = $object.'Invoice Month'
$invoice = "01-" + $invoice
$invoice = [datetime]::parseexact($invoice, 'yyyy-MM-dd', $null)

但我得到错误:

字符串未被识别为有效的DateTime。

我错过了什么吗?

powershell datetime
4个回答
22
投票

ParseExact被告知要解析的日期格式,而不是你想要的格式。

$invoice = '01-Jul-16'
[datetime]::parseexact($invoice, 'dd-MMM-yy', $null)

如果您希望输出日期字符串:

[datetime]::parseexact($invoice, 'dd-MMM-yy', $null).ToString('yyyy-MM-dd')

克里斯


5
投票

您需要指定它已有的格式,以便解析它:

$InvoiceDate = [datetime]::ParseExact($invoice, "dd-MMM-yy", $null)

现在您可以以您需要的格式输出它:

$InvoiceDate.ToString('yyyy-MM-dd')

要么

'{0:yyyy-MM-dd}' -f $InvoiceDate

2
投票
$invoice = "Jul-16"
[datetime]$newInvoice = "01-" + $invoice

$newInvoice.ToString("yyyy-MM-dd")

你去,使用类型加速器,但也使用新的var,如果你想在别处使用它,就像这样使用它:$newInvoice.ToString("yyyy-MM-dd")as $newInvoice将始终采用日期时间格式,除非你之后将其转换为字符串,但是失去执行日期时间功能的能力 - 增加天数......


0
投票

希望下面有帮助!

PS C:\Users\aameer>$invoice = $object.'Invoice Month'
$invoice = "01-" + $invoice
[datetime]$Format_date =$invoice

现在输入类型。您可以使用方法或访问任何属性。

Example :$Format_date.AddDays(5)
© www.soinside.com 2019 - 2024. All rights reserved.