2016-09-27 87 views
0

我正在使用powershell来获取十天前的日期和时间。为此,我正在使用以下内容向下舍入分钟精确到10分钟

$date10DaysAgo = (get-date).adddays(-10).tostring("yyyy-MM-dd HH:mm") 

这是每半小时运行一次脚本的一部分。有时在运行约一分钟的脚本时会有延迟,但我希望字符串的时间部分显示一小时或半小时。所以如果这在16:31运行,我需要它显示16:30,如果运行在17:01它会显示17:00。

回答

2

您可以通过减去分钟$date10DaysAgo.Minute % 10做到这一点:

$date10DaysAgo = (get-date).adddays(-10) 
$date10DaysAgo = $date10DaysAgo.AddMinutes(- $date10DaysAgo.Minute % 10).toString("yyyy-MM-dd HH:mm") 
+0

谢谢,这是什么做的完全一样。如其中,%10实际上是什么意思? – Silentbob

+0

这就是模运算符。 “x%10”表示除以10的余数。 – agnul

0

不漂亮,但它的工作原理:

$ago = (Get-Date).AddDays(-10) 

$newMinute = ($ago.Minute/30) * 30 

$ago = Get-Date -Year $ago.Year -Month $ago.Month -Day $ago.Day -Hour $ago.Hour -Minute $newMinute 

Write-Host $ago.tostring("yyyy-MM-dd HH:mm")