私は指定された月数だけ日付をシフトしようとしていますが、同じ日を保つようにしています(例えば、日付の日付が月曜日で、 x日は木曜日、私はまた、新しい取得日から3日を減算する必要があります。このアルゴリズムは、新しい取得日に応じて、基本的に同じ曜日を表す最も近い日付を追加/減算する必要があります。たとえば、開始日が10.08.2016(水曜日)で、3か月間を追加すると、10.11.2016(木曜日)になるため、その日に最も近い水曜日は09.11.2016になります。日付を月単位でシフトしますが、同じ日に保ちます
int startDayOfWeek = ((int)startDay.DayOfWeek) == 0 ? 7 : (int)startDay.DayOfWeek;
int newStartDayOfWeek = ((int)startDay.AddMonths(period).DayOfWeek) == 0 ? 7 : (int)startDay.AddMonths(period).DayOfWeek;
int shiftingDays = startDayOfWeek - newStartDayOfWeek;
if (shiftingDays > 3)
shiftingDays -= 7;
startDayは、開始日で、期間は私がに移行したいヶ月の数である:私は今、このような何かに見えるまで作ることに成功し何
。
しかし、これはまだいくつかの時間が失敗するので、任意のヒントは非常に高く評価されるだろう。
例このコードは失敗し、次のようになります。 たstartDate = 2016年8月1日(月曜日)と期間は5ヶ月を追加した後5 だろう、私は日曜日である2017年1月1日、最も近い月曜日が上になり得ます02.01.2017、しかし、私は6日かかる。
どのような状況で失敗するのですか? – ChrisF
使用:新しいDateTime(startDayOfWeek.Year、startDayOfWeek.month + 1、startDayOfWeek.day)。 – jdweng
たとえば、1月31日を1か月でシフトするとどうなりますか? – CompuChip