プロが教える店舗&オフィスのセキュリティ対策術

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

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

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

A 回答 (2件)

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);
    }
  }
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/02/18 16:19

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;



}

}

}


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

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

お礼日時:2010/02/18 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています