计算 两个日期之间 相差几个小时 (除掉 星期天)
请各位前辈帮忙

解决方案 »

  1.   

    确定两个日期之间的间隔 (Visual C#)
    本示例计算两个日期之间相差的天数并为该差额构造一个 TimeSpan 值。
    示例
    DateTime oldDate = new DateTime(2002,7,15);
    DateTime newDate = DateTime.Now;// Difference in days, hours, and minutes.
    TimeSpan ts = newDate - oldDate;
    // Difference in days.
    int differenceInDays = ts.Days;Console.WriteLine("Difference in days: {0} ", differenceInDays);
      

  2.   

    如果计算相差多少小时,可以使用:
    ts.TotalHours;还要不计星期的话,就要想办法算出两个时间段之间,有几个星期天,然后再在此结果基本了,减去星期天x24小时。现在问题是,如何计算两个日期间,有几个星期天呢?
      

  3.   

    两个DateTime相减得到TimeSpan 
    通过TimeSpan的属性获取日期。
      

  4.   

    根据日期返回是星期几:
    Response.Write((int)(new DateTime(2006,8,6).DayOfWeek));星期天:0
    星期一到星期六:1-6
      

  5.   

    DateTime oldDate = new DateTime(2006,8,1,11,0,0,0);
    DateTime newDate = DateTime.Now;
    TimeSpan ts = newDate - oldDate;
    double hours = ts.TotalHours;
    int i;
    int j = 0;
    DateTime tempDate = oldDate;
    for (i = 0;i<hours;i++)
    {
    tempDate = oldDate.AddHours(i);
    if(tempDate.DayOfWeek == DayOfWeek.Sunday)
    j++;
    }
    hours = hours - j;//返回double型的hours。这个循环你再看看测试下,原理是对的。我就这样用的。
      

  6.   

    去掉星期天,其实也很简单,只要用:结束日期的周次 - 起始日期的周次(如果算一个休息日的话)全部测试代码:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Globalization;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                CultureInfo cultureInfo = new CultureInfo("zh-CN");
                Calendar calendar = cultureInfo.Calendar;
                DateTime dtStart = new DateTime(2006, 7, 1, 20, 0, 0, calendar),
                    dtEnd = new DateTime(2006, 8, 1, 10, 20, 0, calendar);
                int startWeek = calendar.GetWeekOfYear(dtStart, CalendarWeekRule.FirstDay, DayOfWeek.Sunday),
                    endWeek = calendar.GetWeekOfYear(dtEnd, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
                long diffHours = Convert.ToInt64(((TimeSpan)(dtEnd - dtStart)).TotalHours) - (endWeek - startWeek);
                MessageBox.Show(diffHours.ToString());
            }
        }
    }
      

  7.   

    long diffHours = Convert.ToInt64(((TimeSpan)(dtEnd - dtStart)).TotalHours) - (endWeek - startWeek);
    ==>
     long diffHours = Convert.ToInt64(((TimeSpan)(dtEnd - dtStart)).TotalHours) - (endWeek - startWeek) * 24;少乘了24
      

  8.   

    经测试,zxkid给出的代码是对的