powershell - 如何比较两个变量之间的时间
问题描述
我正在尝试比较两个变量之间的时间差。 $dt
是从日志文件的文本中提取的字符串。 $curtime
从当前日期和时间中提取。
如果我输出$dt
,它会正确显示日志文件中的日期和时间。如果我输出$curtime
,它会正确显示工作站的日期和时间。
但是当我尝试运行New-TimeSpan
并输出差异时,我的响应总是“02:24:12”。
这是我正在使用的代码:
New-TimeSpan $dt $curtime | Set-Variable -Name $TimeDiff
if ($TimeDiff.Seconds -lt 0) }
$Hrs = ($TimeDiff.Hours) + 23
$Mins = ($TimeDiff.Minutes) + 59
$Secs = ($TimeDiff.Seconds) + 59 }
else {
$Hrs = $TimeDiff.Hours
$Mins = $TimeDiff.Minutes
$Secs = $TimeDiff.Seconds }
$Difference = '{0:00}:{1:00}:{2:00}' -f $Hrs,$Mins,$Secs
$Difference
解决方案
除非日志中的日期时间来自非常窄的时间跨度,
否则通过添加 23:59:59 来操纵 IMO 是没有意义的。
最好从 .TotalHours 中取出整数部分
这里返回时间 > 24/99
$dt = "05/26/19 08:23:37"
$LogDT = [datetime]::parseexact($dt,"MM/dd/yy HH:mm:ss",[cultureInfo]::Invariantculture)
$TimeDiff = [datetime]::now - $LogDT
$Difference = '{0:00}:{1:00}:{2:00}' -f ([math]::floor($Timediff.TotalHours)),
$Timediff.Minutes,$Timediff.Seconds
样本输出:
> $Difference
111:16:17
推荐阅读
- c# - HTTP 错误 500.30 - ANCM 进程内启动失败 - “Microsoft.Data.SqlClient.TdsParser”引发异常
- json - 在 REST API 中发送汉字字符时出现问题
- macos - Apple Mac M1:VipsOperation:找不到类“webpsave_buffer”
- android - 如何在 Rubymotion webview 中添加确认 AlertDialog?
- r - 简化嵌套的 lapplys
- scala - Flink Cassandra 不支持给定 DataStream 的类型:GenericType
- javascript - React-Router 参数不可访问
- r - 使用 openxlsx 将 Excel 数据导入 R:文件中的错误(con,“r”):无效的“描述”参数
- python - Numpy exp() 不可调用
- ruby-on-rails - 过滤记录后的活动管理员,保存后想返回(过滤过滤器和搜索结果)