none
如何获得时间段中的所有年月列表? RRS feed

  • 問題

  • 如题;
    例如要获取2007-02-01 ~2009-08-20时间段之间所有的年月列表?
    2007-02 2007-03 2007-04 …… 2009-07 2009-08
    如何获得这个List呢? 
    2009年8月21日 上午 09:33

解答

  • sDate = 2007/2/1
    用 nDate = sDate.AddMonth(1) 跑回圈,直到 nDate > eDate (2009/8/20)


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 Lolota Lee 2009年8月26日 上午 07:31
    2009年8月21日 上午 09:44
  •             DateTime dtStart = new DateTime(2007,2,1);
                DateTime dtEnd = new DateTime(2009,8,2);
    
                do
                {
                    this.listBox1.Items.Add(dtStart.ToString("yyyy-MM"));
                    dtStart = dtStart.AddMonths(1);
                } while (dtEnd >= dtStart);


    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    • 已標示為解答 Lolota Lee 2009年8月26日 上午 07:31
    2009年8月21日 下午 12:34
    版主
  • for (DateTime i = new DateTime(2007, 2, 1), end = new DateTime(2009, 8, 20);
         i < end; i = i.AddMonths(1))
    {
        listBox1.Items.Add(i.ToString("yyyy-MM"));
    }


    C#學習者,修練中,ACM解題魂 - http://kgame-blog.spaces.live.com/
    • 已編輯 kgame 2009年8月21日 下午 07:36
    • 已標示為解答 Lolota Lee 2009年8月26日 上午 07:31
    2009年8月21日 下午 07:33
  • for
     (DateTime i = new
     DateTime(2007, 2, 1), end = new
     DateTime(2009, 8, 2);
         i < end; i = i.AddMonths(1))
    {
        listBox1.Items.Add(i.ToString("yyyy-MM"
    ));
    }
    


    C#學習者,修練中,ACM解題魂 - http://kgame-blog.spaces.live.com/
         我建議中間那段 i < end 改成 i  <= end 會好一點, 否則如果結尾條件是 2009,8,1 那2009-08就跑不出來了.

    請關心自己的問題,不要問了就放空;這是對別人與自己的尊重
    • 已標示為解答 Lolota Lee 2009年8月26日 上午 07:31
    2009年8月21日 下午 07:41
    版主

所有回覆

  • sDate = 2007/2/1
    用 nDate = sDate.AddMonth(1) 跑回圈,直到 nDate > eDate (2009/8/20)


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    • 已標示為解答 Lolota Lee 2009年8月26日 上午 07:31
    2009年8月21日 上午 09:44
  •             DateTime dtStart = new DateTime(2007,2,1);
                DateTime dtEnd = new DateTime(2009,8,2);
    
                do
                {
                    this.listBox1.Items.Add(dtStart.ToString("yyyy-MM"));
                    dtStart = dtStart.AddMonths(1);
                } while (dtEnd >= dtStart);


    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    • 已標示為解答 Lolota Lee 2009年8月26日 上午 07:31
    2009年8月21日 下午 12:34
    版主
  • for (DateTime i = new DateTime(2007, 2, 1), end = new DateTime(2009, 8, 20);
         i < end; i = i.AddMonths(1))
    {
        listBox1.Items.Add(i.ToString("yyyy-MM"));
    }


    C#學習者,修練中,ACM解題魂 - http://kgame-blog.spaces.live.com/
    • 已編輯 kgame 2009年8月21日 下午 07:36
    • 已標示為解答 Lolota Lee 2009年8月26日 上午 07:31
    2009年8月21日 下午 07:33
  • for
     (DateTime i = new
     DateTime(2007, 2, 1), end = new
     DateTime(2009, 8, 2);
         i < end; i = i.AddMonths(1))
    {
        listBox1.Items.Add(i.ToString("yyyy-MM"
    ));
    }
    


    C#學習者,修練中,ACM解題魂 - http://kgame-blog.spaces.live.com/
         我建議中間那段 i < end 改成 i  <= end 會好一點, 否則如果結尾條件是 2009,8,1 那2009-08就跑不出來了.

    請關心自己的問題,不要問了就放空;這是對別人與自己的尊重
    • 已標示為解答 Lolota Lee 2009年8月26日 上午 07:31
    2009年8月21日 下午 07:41
    版主
  • 最终采用[小歐ou]的方法,但是还是有一个年月未包含,其他人的方法也都没有正确包含所有年月

    DateTime dtStart = new DateTime(2007,2,1);
                DateTime dtEnd = new DateTime(2009,8,2);

                do
                {
                    this.listBox1.Items.Add(dtStart.ToString("yyyy-MM"));
                    dtStart = dtStart.AddMonths(1);
                } while (dtEnd.AddMonths(1) >= dtStart);    //while (dtEnd >= dtStart);


     

    2009年9月9日 上午 08:23
  • 如果你的資料來源是資料庫的話,配合 Group By + 型別轉換 可以只顯示資料庫內有的年月
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年9月9日 上午 09:07
  • 最终采用[小歐ou]的方法,但是还是有一个年月未包含,其他人的方法也都没有正确包含所有年月

    DateTime dtStart = new DateTime(2007,2,1);
                DateTime dtEnd = new DateTime(2009,8,2);

                do
                {
                    this.listBox1.Items.Add(dtStart.ToString("yyyy-MM"));
                    dtStart = dtStart.AddMonths(1);
                } while (dtEnd.AddMonths(1) >= dtStart);    //while (dtEnd >= dtStart);
    Hi,

    不太懂你的意思

    你的問題明明是
    "例如要获取2007-02-01 ~2009-08-20时间段之间所有的年月列表?
    2007-02 2007-03 2007-04 …… 2009-07 2009-08"

    但你上面的程式是會跑出
    2007-02 2007-03 2007-04 …… 2009-07 2009-08 2009-09

    怎麼變成其他人的方法有誤了?!

    http://www.dotblogs.com.tw/larrynung/
    2009年9月9日 上午 09:09