みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

開始と終了を指定して、その間の日付を取得したい。

開始と終了を指定して、その間の日付を取得したい。

C#(VS2008)環境です。
開始日と終了日を指定して、日付のリスト(できれば曜日を含む)が
戻ってくるようなメソッドを作りたいと思っています。
単純に、今月の1日から20日まで、とかならループして作れそうに
思うんですが。
たとえば、2010/02/20を開始、2010/03/20を終了とするような、
月をまたぐような場合にどうしよう…と悩んでいます。
(2010/02/20、2010/02/21、2010/02/22…というようなリストがほしい)

アドバイスいただけないでしょうか。

投稿日時 - 2010-02-18 10:46:53

QNo.5686262

すぐに回答ほしいです

質問者が選んだベストアンサー

DateTimeのAddDaysを使って範囲でループすればいいのでは?

サンプル
※全角空白を使用してインデント表示しています。コピペするときは置換してください。

using System;
using System.Collections.Generic;

public class Program1
{
  static void Main()
  {
    DateTime start = DateTime.Now;
    DateTime end = new DateTime(2010, 3, 31);
    List<DateTime> DateList = new List<DateTime>();
    GetDateList(ref DateList, start, end);
    foreach (DateTime date in DateList){
      Console.WriteLine(date.ToString("yyyy/MM/dd(ddd)"));
    }
  }

  static void GetDateList(ref List<DateTime> DateList, DateTime start, DateTime end)
  {
    DateList.Clear();
    for (DateTime date = start; date <= end; date = date.AddDays(1)) {
      DateList.Add(date);
    }
  }
}

投稿日時 - 2010-02-18 11:18:58

お礼

ありがとうございます。
経年を秒に変換して…とか難しく考えていました。
AddDaysなんて便利なものがあったのですね

投稿日時 - 2010-02-18 16:19:21

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

namespace Q5686262

{

class MainClass

{

public static void Main (string[] args)

{



System.Collections.Generic.List<System.DateTime> list = new System.Collections.Generic.List<System.DateTime>();

System.DateTime d = new System.DateTime(2010,2,20);

while(d.CompareTo(new System.DateTime(2010,3,20)) <= 0){

list.Add(d);

d = d.AddDays(1);

}

list.ForEach(delegate(System.DateTime d1){ System.Console.WriteLine(d1.ToString()); });

return;



}

}

}


#こんなの?値返してないけど(汗)
#敢えてうるう年にしてみたりしてテストするのも面白い

投稿日時 - 2010-02-18 11:18:31

お礼

ありがとうございます。
経年を秒に変換して…とか難しく考えていました。
AddDaysなんて便利なものがあったのですね。

投稿日時 - 2010-02-18 16:19:09

あなたにオススメの質問