改进脚本以获取前一周的日期 [英] Improve script to get previous week day
本文介绍了改进脚本以获取前一周的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我这里有一个小的 powershell 脚本,可以找到前一天的最后一天.目前我正在做 - 如果是星期一,则减去 3 天,如果是星期日,则减去 2 天,如果是其他任何一天,则减去 1.这似乎有点愚蠢......有没有更好的方法来做到这一点?>
I've got a little powershell script here that finds the last previous day. At the moment I'm doing - If it's monday then subtract 3 days, if it's Sunday subtract 2 days and if it's any other day subtract 1. This seems a bit dumb... Is there a better way to do this?
$prevWD =
if ((Get-Date).DayOfWeek -eq 1) #Monday
{ (get-date).AddDays(-3) }
elseif ((Get-Date).DayOfWeek -eq 0) #Sunday
{ (get-date).AddDays(-2) }
ELSE { (get-date).AddDays(-1) } #Any other day
推荐答案
您可以这样计算前一个工作日:
You can calculate the previous workday like this:
$d = Get-Date
$offset = ($d.DayOfWeek.value__ + 5) % 7
$delta1 = [math]::Floor([int]$offset / [int]5)
$delta2 = [math]::Floor([int]$offset / [int]6)
$prevWD = $d.AddDays(-($delta1 + $delta2 + 1)).DayOfWeek
但是,做这样的事情可能更简单:
However, it might be simpler to just do something like this:
$d = Get-Date
if ('Sunday','Monday' -contains $d.DayOfWeek) {
$prevWD = 'Friday'
} else {
$prevWD = $d.AddDays(-1).DayOfWeek
}
演示:
PS C:\> $now = Get-Date
PS C:\> 0..6 | % {
>> $wd = $now.AddDays($_)
>> $wd | % {
>> $offset = ($_.DayOfWeek.value__ + 5) % 7
>> $d1 = [math]::Floor([int]$offset / [int]5)
>> $d2 = [math]::Floor([int]$offset / [int]6)
>> "{0,-10}`t{1}" -f $wd.DayOfWeek, $_.AddDays(-($d1 + $d2 + 1)).DayOfWeek
>> }
>> }
>>
Monday Friday
Tuesday Monday
Wednesday Tuesday
Thursday Wednesday
Friday Thursday
Saturday Friday
Sunday Friday
这篇关于改进脚本以获取前一周的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文