计算 两个日期之间 相差几个小时 (除掉 星期天)
请各位前辈帮忙
请各位前辈帮忙
解决方案 »
- 关于datagridview中列求和的问题
- c# 调用C++的dll,返回是个字符指针如何处理
- 怎么实现让窗体1的文本框跟着窗体二的文本框的内容变化
- 请问怎么用C#语言做一个简单的windowfrom邮编查询器
- ctrl+enter模拟按钮的click事件,但同时也实现了richTextBox的换行。(不需要换行)
- TreeView默认选中某节点,如何设置
- 见鬼了啊,活见鬼,真的活见鬼,一辈子都没遇见过
- C#將文件寫入內存後調用
- 谁 会把数据库中的img 取出 并显示到网页的指定位置 或者 用imgbox 显示(使用流不保存图片)
- 怎样更改两个windows form的启动顺序?
- 求一用户登陆验证代码 分不够再加(新手问题)
- 同样的代码在winfrom里就可以运行在Web里就不可以运行这是为什么?
本示例计算两个日期之间相差的天数并为该差额构造一个 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);
ts.TotalHours;还要不计星期的话,就要想办法算出两个时间段之间,有几个星期天,然后再在此结果基本了,减去星期天x24小时。现在问题是,如何计算两个日期间,有几个星期天呢?
通过TimeSpan的属性获取日期。
Response.Write((int)(new DateTime(2006,8,6).DayOfWeek));星期天:0
星期一到星期六:1-6
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。这个循环你再看看测试下,原理是对的。我就这样用的。
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());
}
}
}
==>
long diffHours = Convert.ToInt64(((TimeSpan)(dtEnd - dtStart)).TotalHours) - (endWeek - startWeek) * 24;少乘了24