powershell计算从今天起的第20个工作日

时间:2018-02-03 20:54:36

标签: powershell

尝试计算\来自今天在powershell中确定第6个业务。 是否有可用的脚本\功能?

示例: 如果今天的日期是2018年2月4日,那么从今天起的第6个工作日是2018年12月12日。 我如何使用powershell获取该日期?

2 个答案:

答案 0 :(得分:0)

我认为这适用于您的情况。 如果当前迭代在星期六登陆,则增加2天,如果在星期日登陆,则增加1天。可能有更好的方法,但我知道这有效。

编辑:如果您需要考虑假期让我知道,我没有想到它,我可以编辑此脚本以包含它。

$daystoadd = 7

$CurrentDate = Get-date

For ($i = 1; $i -le $daystoadd; $i++) {
    $CurrentDate = $CurrentDate.adddays(1)
    if ($CurrentDate.DayOfWeek -eq 'Saturday') {
        $CurrentDate = $CurrentDate.adddays(2)
    }
    if ($CurrentDate.DayOfWeek -eq 'Sunday') {
        $CurrentDate = $CurrentDate.adddays(1)
    }

}

$CurrentDate

答案 1 :(得分:0)

@Sumanth专门要求第六个工作日,所以这应该可以解决问题:

function SixthBusinessDay($date)
{
    $daysToAdd = 8,8,8,8,8,10,9 
    $weekDay = $date.DayOfWeek.value__
    $sixtBusinessDay = $date.AddDays($daysToAdd[$weekDay])
    return $sixtBusinessDay
}

根据所有日子需要至少六天和一个周末才能成为第六个工作日,但周五需要额外两天,周六需要额外一天。

运行此:

(SixthBusinessDay (Get-date "2018-1-29")).ToString("dddd dd/MM")
(SixthBusinessDay (Get-date "2018-1-30")).ToString("dddd dd/MM")
(SixthBusinessDay (Get-date "2018-1-31")).ToString("dddd dd/MM")
(SixthBusinessDay (Get-date "2018-2-1")).ToString("dddd dd/MM")
(SixthBusinessDay (Get-date "2018-2-2")).ToString("dddd dd/MM")
(SixthBusinessDay (Get-date "2018-2-3")).ToString("dddd dd/MM")
(SixthBusinessDay (Get-date "2018-2-4")).ToString("dddd dd/MM")

给出以下结果:

Tuesday 06-02
Wednesday 07-02
Thursday 08-02
Friday 09-02
Monday 12-02
Monday 12-02
Monday 12-02