Powershell 添加到日期时间

Powershell 添加到日期时间,powershell,datetime,Powershell,Datetime,如果有人在这里问过我,请原谅,但我找不到,但我找到了 在我的日志文件中,有一个记录值的时间,该时间被写入HH:mm:ss 我需要解析该文件的多行,到目前为止,我唯一能做到这一点的方法是在我想要开始解析行的特定时间上增加几分钟 这是我目前用来添加的代码。然而,当分钟是像“05”或低于10的时候,它只是删除了0,我最终得到了这样一个时间:15:7:49,而它应该是15:07:49 当它确实起作用而文件中不存在时间时,它会再添加一秒。有时日志工具跳过一秒钟,但不会超过1秒 $a = [datetime

如果有人在这里问过我,请原谅,但我找不到,但我找到了

在我的日志文件中,有一个记录值的时间,该时间被写入
HH:mm:ss

我需要解析该文件的多行,到目前为止,我唯一能做到这一点的方法是在我想要开始解析行的特定时间上增加几分钟

这是我目前用来添加的代码。然而,当分钟是像“05”或低于10的时候,它只是删除了0,我最终得到了这样一个时间:15:7:49,而它应该是15:07:49

当它确实起作用而文件中不存在时间时,它会再添加一秒。有时日志工具跳过一秒钟,但不会超过1秒

$a = [datetime]::ParseExact($a,"HH:mm:ss",$null)
$time = [string]$a.Hour + ":" + ($a.Minute+5) + ":" + $a.Second
if ($time -eq $time){$time = [string]$a.Hour + ":" + ($a.Minute+5) + ":" + $a.Second}
else {$time = [string]$a.Hour + ":" + ($a.Minute+5) + ":" + ($a.Second+1)}
基本上,我要问的是,我如何在不丢失
HH:mm:ss
格式的情况下,将任何数字添加到分或秒

谢谢。

对象具有添加秒、分钟、小时、天等的方法

$a.AddMinutes(5)
通过添加负值,可以使用相同的方法从时间戳中减去时间:

$a.AddMinutes(-5)
例如,可以通过
ToString()
方法或(
-f
)定义输出格式:


但是,作为Lieven Keersmakers,将
DateTime
值转换回格式化字符串时,应保留用于向用户显示该值(消息、日志、报告等)。在脚本中,
DateTime
对象比字符串更容易使用,因此您应该尽可能长时间地使用它们。

您的
$a
变量是一个DateTime,因此您可以在其上使用
AddHours
AddMinutes
AddSeconds
。示例
$a.AddHours(1)
,您应该尽可能长时间推迟转换回字符串。转换回字符串的唯一正当理由是为了显示目的(包括日志记录)。这
if($time-eq$time)
将始终计算为true btw。谢谢,我在尝试另一种编写脚本的方法时注意到了这一部分。尽管如此,还是要感谢你指出这一点。使用这一点和一些关于添加的更多信息,我现在可以正常工作了。谢谢大家的快速回复!
$a.ToString('HH:mm:ss')
'{0:HH:mm:ss}' -f $a