0

2つの日付の間のいくつかのレコードを表示するビューをレンダリングしようとしています。パラメーターが渡されない場合、ビューは5日目から翌月の次の5日目までの1か月のレコードを表示する必要があります。

今私はそれをしました、しかし私は私のコードについて心配しています、これをする別の方法がありますか、つまり私のコードをより良く見せます。

var dateStart = new DateTime();
var dateEnd = new DateTime();

if(dateTime !=null)
{  
     dateStart = Convert.ToDateTime(dateTime);
     dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);
}
else
{
     if (DateTime.Today.Day <= 4)
     {
          DateTime lastMonth = DateTime.Today.AddMonths(-1);
          dateStart = new DateTime(lastMonth.Year, lastMonth.Month, 5);
          dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);
     }

     DateTime date = DateTime.Today;
     dateStart = new DateTime(date.Year, date.Month, 5);
     dateEnd = new DateTime(date.Year, date.Month + 1,5);
}
4

2 に答える 2

1

DateTime13か月のDateTimeを作成しようとすると、12月に無効になるため、このような月を追加しないでくださいAddMonths。代わりに、このメソッドを使用します。また、2番目が無関係にならないように、別のelse statement追加が必要なようです。if statementコードを少し簡略化しましたが、これはあなたが意味したことですか?

var dateStart = new DateTime();
var dateEnd = new DateTime();

if(dateTime !=null)
{  
     dateStart = Convert.ToDateTime(dateTime);
     dateEnd = new DateTime(dateStart.Year, dateStart.Month, 5).AddMonths(1);
}
else
{
     if (DateTime.Today.Day <= 4)
     {
          dateStart = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 5).AddMonths(-1);
          dateEnd = dateStart.AddMonths(1);
     }
     else
     { 
          dateStart = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 5);
          dateEnd = dateStart .AddMonths(1);
     }
}
于 2012-10-12T17:55:14.027 に答える
1

これにより、12月に例外が発生します。

dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);

あなたは試すかもしれません:

DateTime dateEnd = dateStart.AddMonths(1);
dateEnd = new DateTime(dateEnd.Year, dateEnd.Month, 5);
于 2012-10-12T17:57:36.783 に答える