如果当前月份是十二月,如何找到下个月的第一天
本文关键字:何找 下个月 第一天 十二月 如果 | 更新日期: 2023-09-27 18:06:20
我正在使用以下查询来获取下个月。
int theMonth = ((System.DateTime)periodStartDate).Month+1;
但是,如果periodstartDate month id=s十二月,则上面的语句会抛出错误。
我想你可以用这种方式获得
DateTime dt = new DateTime(2011,12,2);
DateTime dayone = new DateTime(dt.AddMonths(1).Year, dt.AddMonths(1).Month, 1);
现在您有了一个合适的DateTime
对象,可以在下个月的第一个月使用它
如果月份是十二月,表达式((System.DateTime)periodStartDate).Month+1
不会抛出错误,它只返回13。我怀疑你在这么做:
var nextMonth = new DateTime(periodStartDate.Year, periodStartDate.Month + 1, 1);
这会导致一个错误。
试试这个:
var nextMonth = new DateTime(periodStartDate.Year, periodStartDate.Month, 1)
.AddMonths(1);
我喜欢V4V的答案,但我是这样写的:
DateTime dt = new DateTime(2011,12,2);
DateTime firstDayNextMonth = dt.AddMonths(1).AddDays(-dt.Day+1);
例如,我可能正在计算一个未来的时间,而这段代码可以在不剥离时间部分的情况下进行计算。
根据hvd最精明的评论,这个代码应该是:
DateTime dt = new DateTime(2011,12,2);
DateTime firstDayNextMonth = dt.AddDays(-dt.Day+1).AddMonths(1);
int theMonth = ((System.DateTime)periodStartDate).AddMonths(1).Month;
诀窍在于了解开始日期不能在当月的第一天开始,因此简单的AddMonth
可能会导致不需要的日期。在第01天建立一个新的DateTime,然后添加月份。
var firstDayNextMonth = new DateTime(startDate.Year, startDate.Month, 1).AddMonths(+1);
BTW,AddMonths
方法文件规定:
AddMonths方法计算得到的月份和年份,考虑闰年和一个月中的天数,然后调整得到的DateTime对象的日期部分。如果生成的日期不是生成月份的有效日期,则使用生成月份的最后一个有效日期。例如,对于非闰年,3月31日+1个月=4月30日,而对于闰年,则为3月31号-1个月=2月28日,对于闰年则为2月29日。
下个月的第一个日期,时间00:00:00
DateTime dt = DateTime.Now.AddMonths(1);
DateTime dayone = new DateTime(dt.Year, dt.Month, 1);
计算theMonth
后,检查它是否等于13(12月后的一个月(,并将该值替换为1:
theMonth = theMonth==13 ? 1 : theMonth;
如果调用AddMonths(1)
,那么.NET将自动将日期滚动到下一年。
periodStartDate.AddMonths(1).Month;
您可以使用以下代码:
var newDaye = DateTime.Now.AddMonths(1).AddDays(-DateTime.Now.Day + 1); //first day in next month
DateTime now = DateTime.Now;
DateTime nextMonth;
if(now.Day > 1)
nextMonth = now.AddDays(-(now.Day - 1)).AddMonths(1);
else
nextMonth = now.AddMonths(1);
其中现在是您想要开始的日期,您可以用TheStartPeriod 替换
DateTime date = DateTime.Now;
Console.WriteLine(date);
// Sunday 28.06.2015 г. 10:22:41 ч.
int monthsBack = -1;
int whichDay = 1;
// It means -> what day the first day of the previous month is.
DayOfWeek FirstDayOfWeek = date.AddMonths(monthsBack).AddDays(whichDay).DayOfWeek;
Console.WriteLine(FirstDayOfWeek);
// Friday
int delta = DayOfWeek.Monday - date.AddMonths(monthsBack).AddDays(whichDay).DayOfWeek;
Console.WriteLine(delta);
// -4
//-4 ->Monday , -3 ->Tuesday, -2 ->Wednesday , -1 ->Thursday, 0 ->Friday
DateTime nextMonthStartDate= DateTime.Parse(startdate.Year + "-" + startdate.AddMonths(1).Month + "-01");
这将适用于闰年或非闰年。在上面的转换字符串到日期时间与静态日期1,因为总是采取月初。希望它是有用的