为什么我的DateTime对象的行为不同?

时间:2019-07-28 03:29:51

标签: powershell datetime

我有一个脚本,该脚本使用$startDate在两次$endDateSearch-UnifiedAuditLog之间检查某些日志,其中$startDate通过检查.txt文件中的一行来找到,并且$endDate是当前时间。我按如下所示运行它。

$startDate = Get-Content $logPath -Last 1
$startDate = [datetime]$startDate
$startDate = $startDate.AddHours(-1)
$endDate = (Get-Date)

该特定脚本每小时运行一次,因此$startDate$endDate之间的时间为两个小时(由于AddHours)。如果我检查这些变量的值,它们实际上确实相隔两个小时。但是,当我运行脚本时,它将经历前6个小时的日志。这使我认为是假设$ startDate为UTC,并将其转换为我的时区。这是在做什么吗?如果是这样,我如何才能让我的脚本仅检查.txt文档中列出的时间之前一小时的日志?

1 个答案:

答案 0 :(得分:0)

将我的评论变成答案

您可以检查.Kind变量的$startDate属性。
此属性可以是本地 Utc 未指定。参见DateTimeKind Enum

对于未指定,从.NET 2.0开始,“ 此DateTime实例被假定为UTC时间,并且转换的方式类似于Kind为Utc。”,如the docs

中所述