我正在使用PowerShell尝试将字符串转换为日期时间。这应该很容易,对吗?
我正在从CSV导入中获取字符串,它的格式为Jul-16
。我尝试了多种方法将其转换为我想要的格式yyyy-MM-dd
,目前我处于以下状态。
$invoice = $object.'Invoice Month'
$invoice = "01-" + $invoice
$invoice = [datetime]::parseexact($invoice, 'yyyy-MM-dd', $null)
但我得到的错误:
字符串未被识别为有效的DateTime。
我错过什么了吗?
8条答案
按热度按时间06odsfpq1#
ParseExact被告知它期望解析的日期格式,而不是您希望输出的格式。
如果希望输出日期字符串:
z9gpfhce2#
您可以简单地将字符串转换为DateTime:
或
或
您可以通过执行以下操作来格式化生成的DateTime变量:
或
或
lc8prwob3#
您需要指定格式 * 它已经具有 *,以便解析它:
现在,您可以将其输出为所需的格式:
或
qjp7pelc4#
Chris Dents的回答已经涵盖了OP的问题,但鉴于这是谷歌上
PowerShell format string as date
的顶级搜索,我想我会给出一个不同的字符串示例。如果像我一样,你得到的时间字符串是
20190720170000.000000+000
需要注意的一点是,在使用
[System.Management.ManagementDateTimeConverter]
时需要使用ToUniversalTime()
,否则会得到与输入的偏移时间。PS代码
输出
[Management.ManagementDateTimeConverter]
上的MS文档:https://learn.microsoft.com/en-us/dotnet/api/system.management.managementdatetimeconverter?view=dotnet-plat-ext-3.1
vom3gejh5#
这样就可以使用一个类型加速器了,而且还转换成了一个新的var,如果你想在其他地方使用它,可以这样使用它:
$newInvoice.ToString("yyyy-MM-dd")
作为$newInvoice
将始终是日期时间格式,除非您以后将其转换为字符串,但将失去执行日期时间函数的能力-添加天数等...t30tvxxf6#
希望下面能有所帮助!
现在类型已转换。您可以使用方法或访问任何属性。
icnyk63a7#
这很容易在我的情况下,它与
输入:
日期格式转换:
输出:
vbkedwbf8#
我有一个不同但相关的需要,将一个数字(秒)转换为天/小时/秒等。