Powershell - 获取上个月的第一天和最后一天

Arb*_*lac 2 powershell datetime

例如,如果我在 11/1/2019 或 11 月的任何其他日期运行脚本,我希望日期更改如下。

$CURRENTDATE=GET-DATE -Format "MM/dd/yyyy"
$FIRSTDAYOFMONTH=GET-DATE $CURRENTDATE -Day 1
$LASTDAYOFMONTH=GET-DATE $FIRSTDAYOFMONTH.AddMonths(1).AddSeconds(-1)

$FIRSTDAYOFMONTH
$LASTDAYOFMONTH
Run Code Online (Sandbox Code Playgroud)

输出 :

Friday, November 1, 2019 12:00:00 AM
Saturday, November 30, 2019 11:59:59 PM
Run Code Online (Sandbox Code Playgroud)

我想要的输出:

10/01/2019 00:00:00

10/31/2019 23:59:59
Run Code Online (Sandbox Code Playgroud)

Vik*_*tam 9

上个月的第一天

(Get-Date -Day 1).AddMonths(-1).ToString("yyyy-MM-dd")
Run Code Online (Sandbox Code Playgroud)

上个月的最后一天

(Get-Date -Day 1).AddDays(-1).ToString("yyyy-MM-dd") 
Run Code Online (Sandbox Code Playgroud)

  • 精彩的答案! (2认同)

Bra*_*ure 5

在当前日期对象上使用 .net AddMonths() 方法返回(或向前)。

并在进行日期数学运算后进行日期格式化。

$CURRENTDATE=GET-DATE -Hour 0 -Minute 0 -Second 0
$MonthAgo = $CURRENTDATE.AddMonths(-1)
$FIRSTDAYOFMONTH=GET-DATE $MonthAgo -Day 1
$LASTDAYOFMONTH=GET-DATE $FIRSTDAYOFMONTH.AddMonths(1).AddSeconds(-1)

$FIRSTDAYOFMONTH.ToString("MM/dd/yyyy HH:mm:ss")
$LASTDAYOFMONTH.ToString("MM/dd/yyyy HH:mm:ss")
Run Code Online (Sandbox Code Playgroud)

输出:

10/01/2019 00:00:00
10/31/2019 23:59:59
Run Code Online (Sandbox Code Playgroud)