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

时间:2019-11-22 20:59:37

标签: 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

输出:

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

2 个答案:

答案 0 :(得分:1)

这是完成工作的一种稍微不同的方法... [咧嘴]

  • 获取当前月份的第一天
  • 在这段时间内使用.Date来代替now来提供midnite
  • 将一个月备份到上个月的第一天
  • 以毫秒为单位进行备份,以获取两个月前的最后一天
  • 放弃时间部分再次获得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

如果您希望最后一天是一天的结束之前而不是开始时,请删除.Date代码中的第二个$LastMonthLastDay。会为您提供今天[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

答案 1 :(得分:0)

在当前日期对象上使用.net AddMonths()方法来回退(或在时间上前进)。

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

const express = require('express');
const postRoutes = express.Router();

// Require Post model in our routes module
let Post = require('./post.model');

// Defined store route
postRoutes.route('/add').post(function (req, res) {
  let post = new Post(req.body);
  post.save()
    .then(() => {
      res.status(200).json({'business': 'business in added successfully'});
    })
    .catch(() => {
      res.status(400).send("unable to save to database");
    });
});

// Defined get data(index or listing) route
postRoutes.route('/').get(function (req, res) {
    Post.find(function(err, posts){
    if(err){
      res.json(err);
    }
    else {
      res.json(posts);
    }
  });
});

module.exports = postRoutes;

输出:

$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")