使用powershell获取当前月份的天数
我需要检索当前月份的天数,尽管我进行了研究,但在powershell中还没有找到任何可以这样做的。以下是我目前为获得我想要的结果而构建的内容。有更好的方法吗 请注意,我仅限于Powershell使用powershell获取当前月份的天数,powershell,powershell-2.0,Powershell,Powershell 2.0,我需要检索当前月份的天数,尽管我进行了研究,但在powershell中还没有找到任何可以这样做的。以下是我目前为获得我想要的结果而构建的内容。有更好的方法吗 请注意,我仅限于Powershell #check to see if this is a leap year function LYC { if ([System.DateTime]::isleapyear((Get-Date).Year)) { $Globa
#check to see if this is a leap year
function LYC
{
if ([System.DateTime]::isleapyear((Get-Date).Year))
{
$Global:LY = True
}
}
#Get the number of days in current month
function fNOD
{
$MNum = (Get-Date).Month
switch ($MNum)
{
1 {$Global:DaysInMonth=31}
2 {
LYC
if (LY)
{
$Global:DaysInMonth=29
} else {
$Global:DaysInMonth=28
}
}
3 {$Global:DaysInMonth=31}
4 {$Global:DaysInMonth=30}
5 {$Global:DaysInMonth=31}
6 {$Global:DaysInMonth=30}
7 {$Global:DaysInMonth=31}
8 {$Global:DaysInMonth=31}
9 {$Global:DaysInMonth=30}
10 {$Global:DaysInMonth=31}
11 {$Global:DaysInMonth=30}
12 {$Global:DaysInMonth=31}
}
}
在我看来,这可能很容易:
$numDays = ((Get-Date -Month 3) - (Get-Date -Month 2))
2月28天,7月减去6月给我30天
如下文所述,这显然有时会产生一些奇怪的整数舍入,给出29d、23h、59m或其他不正确的结果
这似乎是一致的:
$monthLess = Get-Date -Month 4
$NumDays = (Get-Date -Month 5).Subtract($monthLess)
假设您希望它用于存储在
$date
中的任何日期:
((get-date $date -Day 1 -hour 0 -Minute 0 -Second 0).AddMonths(1).AddSeconds(-1)).Day
我建议$numDays=((获取日期-第3个月)-(获取日期-第2个月));也就是说,.NET永远是另一条伟大的路线+1听起来不错,你只需完成
[datetime]::DaysInMonth([datetime]::Now.year,[datetime]::Now.month)
是和(获取日期)。month
(获取日期)。year
或:[datetime]::DaysInMonth((日期)。year,(日期)。month)
-总之,获得准确结果的好方法:+1;o) 关于:(获取日期-第5个月)-(获取日期-第4个月)
在我的计算机上给出29.D 23h 59m 59s。@JPBlanc我只有在第一次使用您的代码时才得到相同的结果。。。所有下一次重试都给30天…奇怪的是,我每次只能用(get Date-Month 5)-(get Date-Month 4)得到30天,但是如果我做我原来的((get Date-Month 5)-(get Date-Month 4)),那么它将随机抛出29d.59m.59s。我正在添加我在上面发现的内容
((get-date $date -Day 1 -hour 0 -Minute 0 -Second 0).AddMonths(1).AddSeconds(-1)).Day