0
DataGridviewに、昨日から を開始する最後の3日間の日付が入力されています。日曜日の日付は含めないでください。以下のコードは大丈夫です 偉大だが、これは書くのと同じように限られた量のコードで改善できると思う。ただ一つの機能Yesterdays日付から始まり、日曜日を含まない最後の3日間の日付を生成
どうすれば改善できる?月曜日は-11/07/2016、火曜日-11/08/2016 TODAY-処理した場合に
private void button1_Click(object sender, EventArgs e)
{
var rangeList = new List<MyDates>();
//first date
var yesterday = DateTime.Today.AddDays(-1);
string dayoftheweek = yesterday.DayOfWeek.ToString();
DateTime storefirstdate;
if (dayoftheweek == "Sunday")
{
var firstdate = DateTime.Today.AddDays(-2);
storefirstdate = firstdate;
rangeList.Add(new MyDates() {Dateseries = storefirstdate});
}
else
{
storefirstdate = yesterday;
rangeList.Add(new MyDates() {Dateseries = storefirstdate});
}
//second date
var twodaysago = DateTime.Today.AddDays(-2);
string dayoftheweek2 = twodaysago.DayOfWeek.ToString();
DateTime storeseconddate;
if (dayoftheweek2 == "Sunday")
{
var seconddate = DateTime.Today.AddDays(-3);
storeseconddate = seconddate;
rangeList.Add(new MyDates() {Dateseries = storeseconddate});
}
else
{
storeseconddate = twodaysago;
rangeList.Add(new MyDates() {Dateseries = storeseconddate});
}
//Third date
var threedaysago = DateTime.Today.AddDays(-3);
string dayoftheweek3 = threedaysago.DayOfWeek.ToString();
DateTime storethirddate;
if (dayoftheweek3 == "Sunday")
{
var thirddate = DateTime.Today.AddDays(-4);
storethirddate = thirddate;
rangeList.Add(new MyDates() {Dateseries = storethirddate});
}
else
{
storethirddate = threedaysago;
rangeList.Add(new MyDates() {Dateseries = storethirddate});
}
dataGridView1.DataSource = rangeList.OrderByDescending(j=>j.Dateseries).ToList();
}
public class MyDates
{
public DateTime Dateseries { get; set; }
}
結果は土曜日、次のようになります - 2016年11月5日
ありがとうございました。少なくとも私のコードよりも短いです。できます。唯一のことは、この形式で時刻を返すことです。 11/8/2016 2.55pm – user2320476
UIでですか?このコードはあなたに日付を与え、あなたはあなたのUIにこの日付をあなたが望むように表示する方法を選ぶことができます。あなたがもっと制御したいなら、あなたのMyDateの 'ToString()'メソッドをオーバーライドして、 '$" {Dateseries.DayOfWeek} - {Dateseries.ToString( "d"}} "'のようなものを返すことができます。 –
それは正しいです。ありがとう – user2320476