我正在使用以下查詢獲取下個月。如何查找下個月的第一天,如果當前月份是十二月
int theMonth = ((System.DateTime)periodStartDate).Month+1;
但是如果periodstartDate month id = s December,上面的語句會拋出錯誤。
有沒有人知道解決方案?
我正在使用以下查詢獲取下個月。如何查找下個月的第一天,如果當前月份是十二月
int theMonth = ((System.DateTime)periodStartDate).Month+1;
但是如果periodstartDate month id = s December,上面的語句會拋出錯誤。
有沒有人知道解決方案?
你計算theMonth
後,檢查它是否等於13(個月12月以後),並替換值1:
theMonth = theMonth==13 ? 1 : theMonth;
int theMonth = ((System.DateTime)periodStartDate).AddMonths(1).Month;
如果你想獲得下一個月,這是正確的答案。也許這就是他要找的。 –
如果你打電話AddMonths(1)
那麼.NET將自動滾動日期進入下一年。
periodStartDate.AddMonths(1).Month;
表達((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);
我認爲你可以以這種方式
DateTime dt = new DateTime(2011,12,2);
DateTime dayone = new DateTime(dt.AddMonths(1).Year, dt.AddMonths(1).Month, 1);
得到它現在你有一個正確的DateTime
對象的第一到下個月,請你做與它
DateTime now = DateTime.Now;
DateTime nextMonth;
if(now.Day > 1)
nextMonth = now.AddDays(-(now.Day - 1)).AddMonths(1);
else
nextMonth = now.AddMonths(1);
哪裏現在是你要開始的日期,你可以用TheStartPeriod
我喜歡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);
你假設'dt.AddMonths(1).Day'與'dt.Day'相同。考慮一下你在什麼時候會發生什麼,例如1月31日。 – hvd
偉大的觀察。我已經修改了答案。 –
@hvd - 第一個例子正是我寫的。花了我一點時間來弄清楚發生了什麼事。在我的情況下,什麼發生了內存異常,因爲在無限循環中呈現1月的日曆 - .- –
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
你應該解釋你的代碼。 –
確確實實這行拋出一個錯誤? – Fender
什麼是例外? –
堆棧跟蹤請? – Coops