当前位置:编程学习 > C#/ASP.NET >>

如何获得一年中的每个星期一的日期

怎样才能获得一年中的每个星期一的日期、同时获取这是这个月的第几个星期、从星期一开始计算
并绑定到一个下拉框中。
求解、 --------------------编程问答--------------------

            DateTime dt = DateTime.Parse("2012-01-01");
            while (dt.Year == 2012)
            {
                if (dt.DayOfWeek == DayOfWeek.Monday)
                {
                    listBox1.Items.Add(dt.ToShortDateString());
                    dt = dt.AddDays(7);
                }
                else
                {
                    dt = dt.AddDays(1);
                }
            }
--------------------编程问答--------------------
DateTime date = new DateTime(2012, 1, 1);
                List<string> MondayInYear = new List<string>();
                List<string> MondayInMonth = new List<string>();
                int week = 0;
                while (date.Year == 2012)
                {
                    if (date.DayOfWeek == System.DayOfWeek.Monday)
                    {
                        int n = (int)Math.Ceiling(date.Day * 1.0 / 7);
                        MondayInYear.Add(date.ToString("yyyy-MM-dd") + "(" + (++week) + ")");
                        MondayInMonth.Add(date.ToString("yyyy-MM-dd") + "(" + n + ")");
                        date = date.AddDays(7);
                    }
                    else
                        date = date.AddDays(1);
                }
                Console.WriteLine("=====================周一在当年中属于第几周================================");
                foreach (string item in MondayInYear)
                {
                    Console.WriteLine(item);
                }
                Console.WriteLine("=====================周一在当月中属于第几周================================");
                foreach (string item in MondayInMonth)
                {
                    Console.WriteLine(item);
                }
--------------------编程问答-------------------- 不错哦。学习了。 DateTime dt = DateTime.Parse("2012-01-01");是中的DateTime.Parse("2012-01-01")什么意思?
--------------------编程问答--------------------
引用 3 楼  的回复:
不错哦。学习了。 DateTime dt = DateTime.Parse("2012-01-01");是中的DateTime.Parse("2012-01-01")什么意思?

将字符串形类型转换成DateTime类型- - --------------------编程问答-------------------- 答案已经很多了,楼主要自己消化总结。 --------------------编程问答-------------------- <div id='ws' runat="server">
<script type="text/javascript">
                                  day = new Date().getDay();
                                  today = new Date();
                                  document.write("今天是" + today.getFullYear() + "年" + (today.getMonth() + 1) + "月" + today.getDate() + "日 星期" + "天一二三四五六".charAt(day));
        </script>
</div>
--------------------编程问答-------------------- 你如果知道做万年历的话 这个就很容易就能做出来· --------------------编程问答-------------------- 一年就365天,循环穷举法,是一个非常好的方法。 --------------------编程问答-------------------- 找出第一个星期一的日期以后,从这个日期开始,连续递增7天来得到下一个日期,我认为更好。 --------------------编程问答-------------------- 我说每次迭代就是只加1天了吗?
用循环法是不错,不过更重要的一个思想是,这个结果只需要计算一次就行,把生成的List放入静态变量、线程变量或者缓存中,不必每次都重新计算一次,也是一个需要使用的好方法。 --------------------编程问答--------------------
引用 1 楼  的回复:
C# code

            DateTime dt = DateTime.Parse("2012-01-01");
            while (dt.Year == 2012)
            {
                if (dt.DayOfWeek == DayOfWeek.Monday)
                {
      ……

方法简介明了 --------------------编程问答--------------------
引用 9 楼  的回复:
找出第一个星期一的日期以后,从这个日期开始,连续递增7天来得到下一个日期,我认为更好。


神经病 --------------------编程问答-------------------- 把你8、10、12楼的回复串联起来看,我觉得你的小心灵确实很可怜。 --------------------编程问答-------------------- 如果lz是问,这个有没有什么更好的办法,还算一个问题。如果说连这个你都想不出任何一个办法,我觉得你的姿势水平还停留在学龄前儿童的层次。 --------------------编程问答--------------------
引用 1 楼  的回复:
C# code

            DateTime dt = DateTime.Parse("2012-01-01");
            while (dt.Year == 2012)
            {
                if (dt.DayOfWeek == DayOfWeek.Monday)
                {
           ……
简洁有效~ --------------------编程问答--------------------
引用 1 楼  的回复:
C# code

            DateTime dt = DateTime.Parse("2012-01-01");
            while (dt.Year == 2012)
            {
                if (dt.DayOfWeek == DayOfWeek.Monday)
                {
           ……


思路一样,应该是最简单有效的算法 --------------------编程问答-------------------- while (date.Year == 2012)
                {
                    if (date.DayOfWeek == System.DayOfWeek.Monday)
                    {
                        int n = (int)Math.Ceiling(date.Day * 1.0 / 7);
                        MondayInYear.Add(date.ToString("yyyy-MM-dd") + "(" + (++week) + ")");
                        MondayInMonth.Add(date.ToString("yyyy-MM-dd") + "(" + n + ")");
                        date = date.AddDays(7);
                    }
                    else
                        date = date.AddDays(1);
                }
这段代码里的else date = date.AddDays(1);是不是在找到第一个星期一后,就不再执行了?
--------------------编程问答-------------------- 其实我一直想不通,就像这个帖子这么简单的问题,为什么还有人在CSDN上问

CSDN真的堕落了 --------------------编程问答-------------------- 这个问题百度搜搜一大把吧,不需要来这问吧 --------------------编程问答--------------------
补充:.NET技术 ,  .NET技术前瞻
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,