【问题标题】:Powershell - Get the first and last day of the previous monthPowershell - 获取上个月的第一天和最后一天
【发布时间】:2019-11-22 20:59:37
【问题描述】:

例如,如果我在 2019 年 11 月 1 日或 11 月的任何其他日子运行脚本,我希望日期如下所示。

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

$FIRSTDAYOFMONTH
$LASTDAYOFMONTH

输出:

Friday, November 1, 2019 12:00:00 AM
Saturday, November 30, 2019 11:59:59 PM

我想要的输出:

10/01/2019 00:00:00

10/31/2019 23:59:59

【问题讨论】:

    标签: powershell datetime


    【解决方案1】:

    在当前日期对象上使用 .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")
    

    输出:

    10/01/2019 00:00:00
    10/31/2019 23:59:59
    

    【讨论】:

      【解决方案2】:

      这是一种稍微不同的工作方式...... [grin]

      • 获取当月的第一天
      • 暂时使用.Date 代替now 给予midnite
      • 将一个月备份到上个月的第一天
      • 以毫秒为单位备份以获得两个月前的最后一天
      • 转储时间部分以再次获得午夜
      • 添加一个月以获得一个一个月前的最后一天

      代码...

      $LastMonthFirstDay = (Get-Date -Day 1).Date.AddMonths(-1)
      $LastMonthLastDay = (Get-Date -Day 1).Date.AddMonths(-1).AddMilliseconds(-1).Date.AddMonths(1)
      
      $LastMonthFirstDay
      $LastMonthLastDay
      

      今天的输出 [2019 年 11 月 22 日,星期五 3:56:23 PM] ...

      2019 October 01, Tuesday 12:00:00 AM
      2019 October 30, Wednesday 12:00:00 AM
      

      如果您希望最后一天刚好在一天结束之前而不是开始时,请删除$LastMonthLastDay 代码中的第二个.Date。这将为您提供今天的代码和结果 [2019 年 11 月 22 日,星期五 3:56:23 PM] ...

      (Get-Date -Day 1).Date.AddMonths(-1).AddMilliseconds(-1).AddMonths(1)
      # 2019 October 30, Wednesday 11:59:59 PM
      

      【讨论】:

        【解决方案3】:

        上个月的第一天

        (Get-Date -Day 1).AddMonths(-1).ToString("yyyy-MM-dd")
        

        上个月的最后一天

        (Get-Date -Day 1).AddDays(-1).ToString("yyyy-MM-dd") 
        

        【讨论】:

          猜你喜欢
          • 2015-04-03
          • 2013-11-25
          • 2014-03-22
          • 1970-01-01
          • 2017-01-07
          • 2013-02-15
          • 2017-01-09
          • 2019-03-04
          • 1970-01-01
          相关资源
          最近更新 更多