如何在Powershell中解析日期并计算时差?

时间:2014-06-17 06:53:32

标签: powershell

在Powershell中,我有两个包含日期的变量。如何解析日期并计算两个日期之间的时差?

$date1="6/16/2014 3:52:48 PM"
$date2="6/16/2014 4:05:53 PM"
$between=$date2-$date1
$between #Need print: 00:13:05

3 个答案:

答案 0 :(得分:4)

.NET的DateTime类型有一整套解析方法,包括一些允许您指定模式或一些模式,指定所需的格式。稍微猜测你有format

$culture = Get-Culture
$format = "M'/'d'/'yyyy h':'mm':'ss tt"
$date1 = [DateTime]::ParseExact('6/16/2014 3:52:48 PM', $format, $culture)
$date2 = [DateTime]::ParseExact('6/16/2014 4:05:53 PM', $format, $culture)

如果从另一个中减去一个DateTime,您将获得TimeSpan个实例,如果您使用的是PowerShell V3或后者,那么使用.NET 4时,这会有更多格式化选项({{3我和"standard"都可用,我使用下面的自定义)比早期版本:

$between = $date2 - $date1
$between.ToString("hh':'mm':'ss")
$between #Need print: 00:07:05

我想你会发现差异是13分5秒。

答案 1 :(得分:2)

我只想使用提供的字符串获取get-date。这将使用当前的文化,并且更简单。

$date1=get-date "6/16/2014 3:52:48 PM"
$date2=get-date "6/16/2014 4:05:53 PM"
$between=$date2-$date1
$between #Need print: 00:13:05

答案 2 :(得分:1)

$ date1 = [datetime]“2014/6/16 15:52:48”

$ date2 = [datetime]“6/16/2014 16:05:53”

(New-TimeSpan -Start $ date1 -End $ date2).ToString()

输出 00:13:05