在Powershell中获取两个日期之间的天数差

gj3fmq9x  于 2022-12-04  发布在  Shell
关注(0)|答案(6)|浏览(160)

我试图在Windows Powershell中获得天数差异,我正在从一个文本文件中提取一年中的最后一个日期,即. 20171231(yyyyMMdd),我已经在本地存储了该文件中的日期。
这里是下面的代码,我正在尝试,但无法得到天的差异,我得到了错误的输出直接减去,如果我转换从文件中提取的字符串,然后减去它与日期类型,即使这样我得到了错误的输出.

$DateStr = (Get-Date).ToString("yyyyMMdd")

$content = Get-Content C:\Users\Date.txt 

$diff = $content.ToString();

#Convert it to the date type
$diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)

#$diff3 = $diff - $DateStr
tkclm6bt

tkclm6bt1#

使用New-TimeSpan作为it represents a time interval。类似于这样,

$d1 = '2017-01-01'
$d2 = '2017-05-01'
$ts = New-TimeSpan -Start $d1 -End $d2
$ts.Days # Check results
120
roqulrg3

roqulrg32#

一个快速、简洁的一行powershell脚本,用于获取当前日期和任何未来日期之间的差异:

[math]::Ceiling((([DateTime]'mm-dd-yyyy')-(Get-Date)).TotalDays)
j2qf4p5b

j2qf4p5b3#

$DateStr将是一个字符串,所以它不能被解析为日期。您也可以使用new-timespan来获取两个日期之间的差值。

$Date = Get-Date

$diff = Get-Content C:\Users\Date.txt -raw

#Convert it to the date type
$diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)

$diff3 = New-TimeSpan -Start $diff -end $Date

#Number of days
$diff3.days
zpf6vheq

zpf6vheq4#

其他人的回答很好,但我经常使用Date-Diff函数(它的功能很强大,开发人员也很熟悉)。请参见下面的示例:

Using Namespace Microsoft.VisualBasic
Add-Type  -AssemblyName  Microsoft.VisualBasic
$start = Get-Date '2019-01-01'  #Convert string into Date type.
$end = Get-Date
[DateAndTime]::DateDiff([DateInterval]::Day, $start, $end)

**编辑:**显然,PowerShell的新版本将支持.NET 7,在这种情况下,您甚至不需要添加程序集。

高温

vawmfj5a

vawmfj5a5#

$Date = Get-Date

$diff = Get-Content C:\Users\Date.txt -raw

#Convert it to the date type
$diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)

#simply difference between dates give you a timespan, take days
($diff - $Date).Day
des4xlb0

des4xlb06#

如果你转换为日期时间对象,很容易减去它们,然后查看days属性,这也适用于时间。

[datetime]'9/3' - [datetime]'9/1' | % days

2

[datetime]'10:30' - [datetime]'9:30' | % hours

1

相关问题