我每个月的第4天和第14天安排一个脚本。
当脚本从第4个开始时,我需要获取上个月的最后一天(简单,$ a.AddDays(-5))
当脚本在14日开始时,我需要在2个月之前的最后一天。
例如:
14 april.
I want to get:28 february 2013
怎么可能? 我也希望以格式yyyymmdd
获取日期UDPDATE:
您的解决方案是否可能无法适应当年的变化?
如果我在1月,$(获取日期).month -1结果为0.所以我这样做了:
$datenow = Get-date
if $datenow.day -eq 14
$datenow.AddDays(-14)
然后我计算
$LastDayInMonth = [System.DateTime]::DaysInMonth($(Get-date).Year, $(Get-date.Month))
$datenow.AddDays(-$LastDayInMonth)
$datestring = $datenow.ToString("yyyyMMdd")
答案 0 :(得分:6)
以字符串形式获取日期:
$(get-date).Date.ToString("yyyyMMdd")
获得前两个月的最后一天:
if($(get-date).Day -eq 14){
$LastDayInMonth = [System.DateTime]::DaysInMonth($(get-date).Year, $($(get-date).Month - 2))
}
<强>更新强>
该行
$LastDayInMonth = [System.DateTime]::DaysInMonth($(get-date).Year, $($(get-date).Month - 2))
使用System.DateTime类中的静态方法DaysInMonth
来获取传递给它的月份中的日期。它的文档是here。它将两个参数作为输入,月份作为整数,年份也作为整数。
在我们的案例中,我们希望在本月前2个月,因此我们传递的月份参数
$(get-date).month - 2
这用括号括起来以确保powershell执行计算然后传递计算结果。 get-date
是一个powershell cmdlet,它将当前日期和时间作为.NET dateTime对象提供,因此我们可以使用所有属性和方法。
整个
[System.DateTime]::DaysInMonth()
只是在PowerShell中调用静态方法的方法。
更新2
一旦你到了月中的最后一天,你可以通过以下方式连接字符串:
$LastDayInMonthString = "$($(get-date).AddMonths(-2).ToString("yyyyMM"))$LastDayInMonth"
答案 1 :(得分:3)
$(Get-Date).addDays(-$(Get-Date).Day).addMonths(-1).ToString("yyyyMMdd")