有人可以用正则表达式来帮助我拉动
Wed Oct 31
从下面
Date: Wed Oct 31 12:55:00 2018 -0500
显然日期会在日志中每天更改。
答案 0 :(得分:6)
您已经要求使用正则表达式,但是您的示例已经显示了时区形式的陷阱!
仅在使用正则表达式时,时区偏移会将其推入午夜,这可能会给您带来错误的一天。我建议改为使用[DateTime]::TryParseExact
,然后使用日期字符串格式将其转换为所需的格式:
$Line = "Date: Wed Oct 31 12:55:00 2018 -0500"
[DateTime] $Date = New-Object DateTime
$Success = [DateTime]::TryParseExact($Line,
"'Date: 'ddd MMM dd HH':'mm':'ss yyyy zzz",
[System.Globalization.CultureInfo]::InvariantCulture,
[System.Globalization.DateTimeStyles]::None,
[ref] $Date)
if ($Success) {
$Date.ToString("ddd MMM dd")
}
上面的示例打印出来
Wed Oct 31
答案 1 :(得分:2)
这不是一个正则表达式,但似乎可以完成工作... [咧嘴]
$FullDateString = 'Date: Wed Oct 31 12:55:00 2018 -0500'
# the `.Split()` version doesn't take into account random extra spaces in the source
# use the next line instead
#$DateString = $FullDateString.Split(' ')[1..3] -join ' '
$DateString = ($FullDateString -split '\s+')[1..3] -join ' '
$DateString
output = Wed Oct 31
上面发生了什么...
您可能想使用一种更灵活的方法,并首先将其转换为[datetime]
对象,然后将.ToString()
与首选格式一起使用。
答案 2 :(得分:1)