次のクエリを使用して次の月を取得しています。現在の月が12月の場合、来月の最初の日の検索方法
int theMonth = ((System.DateTime)periodStartDate).Month+1;
periodstartDate month id = s 12月の場合、上記のステートメントはエラーをスローします。
誰かが解決策を知っていますか?
次のクエリを使用して次の月を取得しています。現在の月が12月の場合、来月の最初の日の検索方法
int theMonth = ((System.DateTime)periodStartDate).Month+1;
periodstartDate month id = s 12月の場合、上記のステートメントはエラーをスローします。
誰かが解決策を知っていますか?
あなたがtheMonth
を計算した後、(12月後の月)それが13に等しいかどうかをチェックし、1に値を置き換えます
theMonth = theMonth==13 ? 1 : theMonth;
int theMonth = ((System.DateTime)periodStartDate).AddMonths(1).Month;
翌月には正解です。多分それは彼が探しているものです。 –
あなたがAddMonths(1)
を呼び出す場合は、.NETが自動的に日付をロールバックされます来年に入る。月が12月である場合
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
オブジェクトを持っている今、このファッション
DateTime dt = new DateTime(2011,12,2);
DateTime dayone = new DateTime(dt.AddMonths(1).Year, dt.AddMonths(1).Month, 1);
でそれを得ることができると思い、あなたのように行ってくださいそれで
ここで、開始する日付は、私はV4Vの答えを好きですが、私はそれをこのように書く
をTheStartPeriod:たとえば
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