美好的一天,Powershell爱好者。
我爱他,今天我注意到一个奇怪的动机促使我写这篇文章。 我想您也会对此感兴趣。 多余刻度线的情况。 如果有兴趣,欢迎来猫:
陌生的本质是什么?
在一个处理中,为了方便选择,需要到月底为止的天数。
这是通过以下一行计算得出的:
((Get-date -Day 1).AddMonths(1)-(get-date)).days-1
特点是它的计算可以得出不同的结果:

起初,我认为代码或Powershell版本有问题。
我在几辆汽车上检查了一下,发现情况是可以重现的。
因此,我坐下来首次亮相并编写了一个函数。
我知道了,注释立即转到代码:
Function Get-DaysToEndOfMonths([int]$Month=1) {If($Month -lt 1){[int]$Month = 1} $CurrentDate = get-date
好吧,在我写完书之后,我坐下来思考并来到了这一行:
[int]((((Get-Date -day 01).AddMonths(1)).AddDays(-1)).Day-(Get-date).Day)
她没有给出错误,但也许是因为:
事实证明,我们没有考虑小时\分钟\秒,而是处理器时钟节拍。
请注意,Get-date返回以毫秒为单位的值。
但是,如果在执行计算时,第一个和第二个Get-date调用落在一个刻度上,则将具有以下值:
(Get-date -day 1).AddMonth(1) = 1.12.2019 15:33:00:500 Get-date = 1.11.2019 15:33:00:500
减去并获得30 00:00:000
但是,如果对第二个“获取日期”的调用落在下一个刻度上,则其值为
=>
1.11.2019 15:33:00:501
然后我们获得价值
29 23:59:59:999
现在找到问题了,我们可以这样做:
而且,我们将始终具有相同的含义。
小心一点,周末愉快!