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

C# 计算两个时间相隔的周数

 最近用到计算两个的日,周,月之间的相差数,半天没找到合适的计算连个时间之间周数的方法,大家帮忙解决一下。
两个数的年份,月份可能都不一样。 --------------------编程问答-------------------- datetime.now.substract(起始时间)就是了
取其中的hour/minute/second/millisecond,也可以直接取totalmilliseconds就是总毫秒数 --------------------编程问答-------------------- 参考 --------------------编程问答--------------------
引用楼主 chuenlizhang 的回复:
 最近用到计算两个的日,周,月之间的相差数,半天没找到合适的计算连个时间之间周数的方法,大家帮忙解决一下。
两个数的年份,月份可能都不一样。


这个方法 我试过了,计算出来 还要再次计算之间周的相隔数,判断是否同年,同月 --------------------编程问答--------------------
引用 3 楼 chuenlizhang 的回复:
引用楼主 chuenlizhang 的回复:
最近用到计算两个的日,周,月之间的相差数,半天没找到合适的计算连个时间之间周数的方法,大家帮忙解决一下。
两个数的年份,月份可能都不一样。


这个方法 我试过了,计算出来 还要再次计算之间周的相隔数,判断是否同年,同月


我感觉还是先算出每个时间的具体年份和日期,然后算相差的日子。。。

这个没啥捷径可走吧? --------------------编程问答-------------------- 谁能贴短代给我 --------------------编程问答--------------------
引用  的回复:
谁能贴短代给我


谁能贴段代码给我 --------------------编程问答-------------------- 日期相减后除以7不就是周数吗? --------------------编程问答-------------------- 最简单的是:
DateTime dt1 = new DateTime(2010, 12, 8);
DateTime dt2 = new DateTime(2011, 1, 16);
TimeSpan span1 = dt2 - dt1;
Response.Write(span1.Days / 7 + "周");
--------------------编程问答--------------------

            DateTime dt1 = new DateTime(2011,7,9);
            DateTime dt2 = new DateTime(2011, 7, 1);
            TimeSpan s = dt1 - dt2;
            Console.WriteLine( s.Days / 7);
            Console.ReadKey();
--------------------编程问答--------------------
引用:
        DateTime dt1 = new DateTime(2010, 12, 8);
        DateTime dt2 = new DateTime(2011, 1, 16);
        TimeSpan span1 = dt2 - dt1;
        Response.Write(span1.Days / 7 + "周");


不是两个日期之间相差天数是多少周,比如:
DateTime DTOne = new DateTime(2011, 1, 5);
DateTime DTTwo = new DateTime(2011, 1, 10);
DTOne 和DTTwo 之间是相隔5天的,但是他们跨了两个周,就是“相隔1个周” --------------------编程问答-------------------- 那要看你的周是怎么定义的了?是过一个星期日,表示跨一个周吗? --------------------编程问答-------------------- 如2011-1-1在2011的第一周中,2011-1-5在2011的第二周中,他们跨了两个周的 --------------------编程问答--------------------

    class Program
    {
        static void Main(string[] args)
        {
            DateTime dt1 = new DateTime(2011,6,6);
            DateTime dt2 = new DateTime(2011, 6, 7);

            Console.WriteLine(week(dt1,dt2));
            Console.ReadKey();
        }

        static int week(DateTime start, DateTime end) {
            int count = 0;
            DateTime p=start;
            while (p < end) {
                if (p.DayOfWeek == DayOfWeek.Sunday) count++;
                p = p.AddDays(1);

            }
            return count;
        }
    }
--------------------编程问答--------------------
引用 12 楼 chuenlizhang 的回复:
如2011-1-1在2011的第一周中,2011-1-5在2011的第二周中,他们跨了两个周的

过的周日的个数+1....不会写。。 --------------------编程问答--------------------  DTOne.DayOfWeek.ToString();
获取星期 不在同一周 加一 就可以了

--------------------编程问答--------------------
引用:
 class Program
    {
        static void Main(string[] args)
        {
            DateTime dt1 = new DateTime(2011,6,6);
            DateTime dt2 = new DateTime(2011, 6, 7);

            Console.WriteLine(week(dt1,dt2));
            Console.ReadKey();
        }

        static int week(DateTime start, DateTime end) {
            int count = 0;
            DateTime p=start;
            while (p < end) {
                if (p.DayOfWeek == DayOfWeek.Sunday) count++;
                p = p.AddDays(1);

            }
            return count;
        }
    }


很好,谢谢 --------------------编程问答-------------------- timespan 来相减 然后转换 --------------------编程问答-------------------- TimeSpan t = d2.Subtract(d1).Duration();
int day = t.Days + 1 + (int)d1.DayOfWeek + (6 - (int)d2.DayOfWeek);
return day / 7; --------------------编程问答-------------------- 以前的
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,