C#获取下一个月的1号的日期

本文描述了一个在系统开发中遇到的问题:通过代码获取当前日期所在月份的下一个月的第一天时出现的Bug,并给出了修复方案。问题出现在从31号过渡到30号的情况,修正后的代码能够正确处理这种特殊情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


    系统开发中,经常用了日期的一系列操作。在系统中用到了获取下一月的1号,开始写的代码如下:

DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.Day+1).AddHours(-DateTime.Now.Hour+1).AddMinutes(-DateTime.Now.Minute).AddSeconds(-DateTime.Now.Second)

很多人都不会觉得有问题,但是今天确实报错了,今天是2014/03/31


结果 这个值还是2014/03/31,分析了一下原因,3月有31天,但是4月却只有30天,这个导致了现在的结果。

根据这个调整了一下代码:

DateTime.Now.AddDays(1-DateTime.Now.Day).AddMonths(1).AddHours(-DateTime.Now.Hour+1).AddMinutes(-DateTime.Now.Minute).AddSeconds(-DateTime.Now.Second)

这是一些细节上的问题。经过严格的测试也没有测出这个问题,谁能想到在3/31这天会报错呢?

希望给大家一个提醒!





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lingxyd_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值