首页 > 解决方案 > 时间到最近的 15 分钟间隔

问题描述

这是我用来将日期四舍五入到 15 分钟间隔 (00,15,30,45) 的代码

正如您从示例中看到的那样,它只会向下取整

我该如何解决这个问题,使其四舍五入到实际最近的 15 分钟,而不是仅仅四舍五入?

try
{$TodayDate = Get-Date -Date "6/25/2019 12:46:22"}
catch
{$TodayDate = Get-Date -Date "25/06/2019 12:46:22"}

$Date1 = $TodayDate
$Date2 = $TodayDate.AddMinutes(-2)
Write-Host "Actual Date: $Date1"
Write-Host "Rounded Date: $($Date1.AddMinutes(- $Date1.Minute % 15 ))"
Write-Host "Actual Date: $Date2"
Write-Host "Rounded Date: $($Date2.AddMinutes(- $Date2.Minute % 15 ))"

实际日期:06/25/2019 12:46:22

舍入日期:06/25/2019 12:45:22

实际日期:06/25/2019 12:44:22

舍入日期:06/25/2019 12:30:22

标签: powershell

解决方案


$9e9 = (Get-Date 0).AddMinutes(15).Ticks # 9,000,000,000
$TodayDate = Get-Date -Date "6/25/2019 12:46:22"
$Date1 = $TodayDate
$Date2 = $TodayDate.AddMinutes(-2)
Write-Host "Actual Date: $Date1"
Write-Host "Rounded Date: $(Get-Date ($9e9 * ([int]($Date1.Ticks / $9e9))))"
Write-Host "Actual Date: $Date2"
Write-Host "Rounded Date: $(Get-Date ($9e9 * ([int]($Date2.Ticks / $9e9))))"

产量:

Actual Date: 06/25/2019 12:46:22
Rounded Date: 06/25/2019 12:45:00
Actual Date: 06/25/2019 12:44:22
Rounded Date: 06/25/2019 12:45:00

推荐阅读