将星期一视为第一天,以一周中的第一天开始

时间:2019-10-15 11:39:50

标签: powershell

我编写了以下代码,以将星期一作为开始日期来获取上周的开始和结束

$date_2 = ((Get-Date).adddays(-(6+(Get-Date -UFormat %u)))).date

Write-Host "From : $date_2"

$date_3 = $date_2.AddDays(6)

Write-Host "To : $date_3"

一切正常。

O/P
From : 10/07/2019 00:00:00
To : 10/13/2019 00:00:00 

现在需要获取将星期一作为开始日期的一周的开始日期。 例如今天是10月15日,星期二 所以应该给

From : 10/14/2019 00:00:00
To : 10/15/2019 00:00:00

例如如果是10月18日,那么应该是

From : 10/14/2019 00:00:00
To : 10/18/2019 00:00:00

需要您的帮助。

4 个答案:

答案 0 :(得分:3)

这使用内置的jQuery(function($){ $('#filter').change(function(){ var filter = $('#filter'); $.ajax({ url:filter.attr('action'), data:filter.serialize(), // form data type:filter.attr('method'), // POST beforeSend:function(xhr){ filter.find('button').text('Processing...'); // changing the button label }, success:function(data){ filter.find('button').text('Apply filter'); // changing the button label back $('#response').html(data); // insert data } }); return false; }); }); 枚举。 [咧嘴]

[DayOfWeek]

输出...

$Today = (Get-Date).Date

$Monday = $Today.AddDays(1 - $Today.DayOfWeek.value__)
$Sunday = $Monday.AddDays(6)

'Week starts {0}' -f $Monday
'Week ends   {0}' -f $Sunday

答案 1 :(得分:2)

您可以使用以下函数来接受当前日期作为输入。
根据该日期和星期几(以INT为单位),它将减去一天直到星期一。

function Get-WeekStartDate
{
    param
    (
        [System.DateTime]$Date
    )

    while ((Get-Date -Date $Date).DayOfWeek.value__ -ne 1)
    {
        $Date = $Date.AddDays(-1)
    }

    return $Date
}

Get-WeekStartDate -Date (Get-Date)

答案 2 :(得分:0)

解决方案:

$monday = (Get-Date -Hour 0 -Minute 0 -Second 0).AddDays(-(Get-Date).DayOfWeek.value__ + 1)

说明:

根据我的检查,(Get-Date).DayOfWeek.value__的值(DayofWeek属性的数值-source)在星期日是0,在星期一是1,以此类推。因此,您从今天00:00:00减去n天。您可以使用.AddDays(-n)来做到这一点。

结果是您将收到星期日,因此您将加1以获得星期一。

我在将星期一和星期日设置为一周的第一天的两台计算机上进行了测试(可以由[System.Globalization.DateTimeFormatInfo]::CurrentInfo.FirstDayOfWeek进行检查),并且在两种情况下,它的工作原理都相同。

答案 3 :(得分:0)

这应该是您想要的(每月的总天数作为额外奖励)。

# Get the current day
$date = Get-Date;

# determine the day, month, and year
$curDay = $date.DayOfWeek;
$curMonth = $date.Month;
$curYear = $date.Year;

# get total days in month
$totalDaysInMonth = [DateTime]::DaysInMonth($curYear, $curMonth);

switch($curDay){
    "Monday" {
        # this is where we want to be
        $offset = 0;
    }
    "Tuesday"{
        $offset = -1;
    }
    "Wednesday"{
        $offset = -2;
    }
    "Thursday"{
        $offset = -3;
    }
    "Friday"{
        $offset = -4;
    }
    "Saturday"{
        $offset = -5;
    }
    "Sunday"{
        $offset = -6;
    }
}

# Lets determine the start of the week
$startOfWeek = $date.AddDays($offset);
$endOfWeek = $startOfWeek.AddDays(6);

# lets show our findings
Write-Host "From: $startOfWeek";
Write-Host "To: $endOfWeek";