【问题标题】:Calculate the time difference between two timestamps计算两个时间戳之间的时间差
【发布时间】:2018-08-13 12:59:46
【问题描述】:

我想计算两个时间戳之间的差异,即使是第二个,下面是我的代码sn-p:

#Start Timer
$Start_Timer = (Get-Date).DateTime
Write-Host "Start Timer is ---> $Start_Timer"
#End Timer
$End_Timer = (Get-Date).DateTime
Write-Host "End Timer is ---> $End_Timer"
$Current_Time_End = (Get-Date).DateTime
$TotalExecutionTime = $End_Timer - $Start_Timer

以上代码的输出为:

开始计时器是 ---> 2018 年 8 月 13 日星期一下午 6:21:18 结束计时器是 ---> 2018 年 8 月 13 日星期一下午 6:22:55

产生错误

无法将值“2018 年 8 月 13 日星期一下午 6:22:55”转换为类型 “System.Int32”。错误:“输入字符串的格式不正确。” 在 D:\Eclipse_Repository\self_repo\jmallick\FileMover.ps1:55 char:1 + $TotalExecutionTime = $End_Timer - $Start_Timer + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [], RuntimeException + FullyQualifiedErrorId : InvalidCastFromStringToInteger

我在这里做错了什么?

【问题讨论】:

  • $TotalExecutionTime = [datetime]$End_Timer - [datetime]$Start_Timer
  • (Get-Date).DateTime -> Get-Date

标签: powershell datetime


【解决方案1】:

(Get-Date).DateTime 是一个字符串,所以你不能进行数学运算。您可以使用(Get-Date).DateTime.gettype().fullname 验证这一点。

在纯日期对象上使用减法,例如$beforeTime = Get-Date 将是您想要做的。这也将返回 TimeSpan 对象

(get-date) - ((get-date).addhours(-1))

另请阅读 relevant post about calculating execution time in .Netusing StopWatch in PowerShell

【讨论】:

    【解决方案2】:

    我用这个

    $t1 = (get-date)
    $t2 = (get-date)
    $tdiff = $t2-$t1
    

    输出变量示例:

    $tdiff
    $tdiff.minutes
    $tdiff.hours
    

    【讨论】:

      【解决方案3】:

      我建议使用 [StopWatch] 进行性能测量。请参见以下示例:

      $timer = [System.Diagnostics.Stopwatch]::StartNew()
      #do your job
      $timer.Stop()
      
      #get timespan
      $timer.Elapsed
      

      【讨论】:

        【解决方案4】:

        使用这个: New-TimeSpan -Start $Start_Timer -End $TotalExecutionTime 您将以多个增量(天、秒等)表示时差。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-13
          • 1970-01-01
          • 2016-12-17
          • 1970-01-01
          • 2014-05-04
          相关资源
          最近更新 更多