首页 > 解决方案 > 在 Powershell 中比较 TICKS 时间

问题描述

我正在尝试比较两个 TICKS 时间,并且我需要比较不那么精确,并认为 DateTime 对象相等,即使它们相隔几毫秒(半分钟顶部),方法是从它们的 DateTime 对象中删除任何多余的毫秒和滴答声(以下 jacubs 指南)。

问题是我的第一个刻度值 ($date1) 是从性能计数器生成的,我无法再次将他转换回日期时间 (Get-Date -Date ($date1)),收到以下错误消息:

获取日期:无法绑定参数“日期”。无法将值“636763462457113590”转换为类型“System.DateTime”。错误:“字符串未被识别为有效的日期时间”

这是我的脚本:

$date1 = (Get-Counter -Counter '\TimeCheck\TIME').CounterSamples[0] | Select-Object -ExpandProperty RawValue
    Get-Date $date1
    Get-Date -Date ($date1) -Millisecond 0  | Select -ExpandProperty Ticks

    $date2 = Get-Date
    $date2.Ticks
    Get-Date -Date ($date2) -Millisecond 0  | Select -ExpandProperty Ticks

    $date1 -eq $date2

该命令对我有用的唯一方法是,如果我自己编写了 TICKS 时间:

PS C:> Get-Date -Date 636763462457113590
Sunday, October 28, 2018 5:57:25 PM

我做错了什么?即使使用 out-string 也不起作用。

标签: powershell

解决方案


看起来“Get-Date -Date ($date1)”中的 $date1 不是数字(基于错误)尝试 Get-Date -Date ([int64]$date1) 或 [datetime][int64]$date1


推荐阅读