powershell - 将字符串转换为具有几天可变数字的日期时间对象

标签 powershell date datetime

我在数组变量中有以下内容

Mon May  1 08:13:18 2017
Sat Apr 29 19:07:14 2017

In order to update the format and timezone, I have to run these two ParseExact commands first.

$time | ForEach-Object {$_ = [datetime]::ParseExact($_,'ddd MMM  d HH:mm:ss yyyy',[System.Globalization.CultureInfo]::InvariantCulture)} 

$time | ForEach-Object {$_ = [datetime]::ParseExact($_,'ddd MMM dd HH:mm:ss yyyy',[System.Globalization.CultureInfo]::InvariantCulture)}

我失败了一个错误(这是预期的)

“带有” 3“参数的调用” ParseExact“的异常:”字符串未被识别为有效的DateTime。“
在D:\ UPDATING.ps1:
+ ... ach-Object {$ _ = [datetime]::ParseExact($ _ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~
+ CategoryInfo:未指定:(:) [],MethodInvocationException
+ FullyQualifiedErrorId:FormatException

从长远来看,一切正常,我可以进行格式化,但是我想知道这样做是否比使用2 parseExact更好?

最佳答案

ParseExact方法有多个重载。其中之一允许您指定要分析的多种日期模式:

$time = 'Sat Apr 29 19:07:14 2017', 'Mon May  1 08:13:18 2017'
$time | % { [DateTime]::ParseExact($_, [String[]]('ddd MMM  d HH:mm:ss yyyy',
                                                  'ddd MMM dd HH:mm:ss yyyy'), [CultureInfo]::InvariantCulture, 'None') }

也有重载,它允许您指定其他解析选项,例如[Globalization.DateTimeStyles]::AllowInnerWhite,以允许在解析的字符串中包含其他空格字符:
$time | % { [DateTime]::ParseExact($_, 'ddd MMM d HH:mm:ss yyyy', [CultureInfo]::InvariantCulture, 'AllowInnerWhite') }

关于powershell - 将字符串转换为具有几天可变数字的日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43718118/

相关文章:

powershell - 使用Powershell查找Open Metro应用

python - 在日期列表中查找最近的过去日期

javascript - 如何使用 javascript 从客户端获取 c# timezoneinfo 类的客户端时区 ID

powershell - Powershell用arg启动/停止

powershell - 哪个用户打开了此文件?自动化的

PHP/MySQL : Date lower than today

java - 如何在android中获取本周第一天的日期

java - 将日期转换为 LocalDate 在公元 200 年左右返回奇怪的结果

javascript - 倒数计时器目标日期隐藏输入字段javascript

powershell - 如何让 creationtime.month 的格式为两位数而不是单数?