改进脚本以获取前一周的日期 [英] Improve script to get previous week day

查看:50
本文介绍了改进脚本以获取前一周的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我这里有一个小的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆