关于网上流传的一句求当前时间所在季度的始末的代码

.Net技术 码拜 8年前 (2016-03-06) 807次浏览
网上有不少人使用下面一句代码来求当前时间所在季度的始末

DateTime dt=DateTime.Now;
DateTime startQuarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day);

这句的确是不错,本人也直接用了这个方法,而且调试的时候没问题。
不过在昨天本人发现了它的不足,
昨天是5月31号,第二季度,第二季度的初始月份是4月,30天。
dt.AddMonths(0 – (dt.Month – 1) % 3)是4月30号,再加(1-31)天是3月31号,并不是4月1号。
除了5月31号之外,其它全部时间用这个语句都没有问题。
原因本人感觉是一年四季的四个初始月,1,4,7,10,只有4月是30天,那么遇到5月31日就出问题了

解决方案

20

这只是个执行次序问题,不能原因是好看而改变次序

DateTime startQuarter = dt.AddDays(1 - dt.Day).AddMonths(0 - (dt.Month - 1) % 3);

要先调整到当月一号,再计算季度


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于网上流传的一句求当前时间所在季度的始末的代码
喜欢 (0)
[1034331897@qq.com]
分享 (0)