C#里比较时间大小的方法

2021-04-26 03:27

阅读:433

标签:variables   null   img   ges   初始化   doc   begin   lap   months   

C#里比较时间大小的方法

在C#的开发中,经常会碰到取时间区间的情况,

或者录入时间区间,比如下图

技术分享图片

开始时间必须要小于结束时间,那就需要时间的比较,所以,我们下面开始介绍一下,三种比较时间的方法

一、时间的比较

技术分享图片技术分享图片
1 string start = this.deDateBegin.EditValue.ToString();
2             string end = this.deDateEnd.EditValue.ToString();
3             DateTime dts = Convert.ToDateTime(start);
4             DateTime dte = Convert.ToDateTime(end);
5             if (DateTime.Compare(dts, dte) > 0)
6             {
7                 MessageBoxUtils.Hint("结束日期不能大于开始日期!", HintMessageBoxIcon.Error);
8                 return;
9             }
方法

如果不是太精细的话,这种方法还是比较简便的!推荐使用

二、计算两个时间差值的函数,返回时间差的绝对值:

技术分享图片技术分享图片
 1 private string DateDiff(DateTime DateTime1,DateTime DateTime2)
 2 
 3 {
 4 
 5 string dateDiff=null;
 6 
 7 try
 8 
 9 {
10 
11 TimeSpan ts1=new TimeSpan(DateTime1.Ticks);
12 
13 TimeSpan ts2=new TimeSpan(DateTime2.Ticks);
14 
15 TimeSpan ts=ts1.Subtract(ts2).Duration();
16 
17 dateDiff=ts.Days.ToString()+""
18 
19 +ts.Hours.ToString()+"小时"
20 
21 +ts.Minutes.ToString()+"分钟"
22 
23 +ts.Seconds.ToString()+"";
24 
25 }
26 
27 catch
28 
29 {
30 
31 }
32 
33 return dateDiff;
34 
35 }
方法2

三、实现计算DateTime1-36天=DateTime2的功能

技术分享图片技术分享图片
 1 TimeSpan ts=new TimeSpan(40,0,0,0);
 2 
 3 DateTime dt2=DateTime.Now.Subtract(ts);
 4 
 5 msg.Text=DateTime.Now.ToString()+"-"+ts.Days.ToString()+"天\r\n";
 6 
 7 msg.Text+=dt2.ToString();
 8 
 9  
10 
11  
12 
13 use "DateTime.Compare" static method
14 DateTime.Compare( dt1, dt2 ) > 0 : dt1 > dt2
15 DateTime.Compare( dt1, dt2 ) == 0 : dt1 == dt2
16 DateTime.Compare( dt1, dt2 ) 0 : dt1  dt2
17         /// 
18          /// 计算两个日期的时间间隔
19          /// 
20          /// 第一个日期和时间
21          /// 第二个日期和时间
22          /// 
23          private string DateDiff(DateTime DateTime1, DateTime DateTime2)
24          {
25              string dateDiff = null;
26            
27              TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
28              TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
29              TimeSpan ts = ts1.Subtract(ts2).Duration();
30              dateDiff = ts.Days.ToString()+""
31                  + ts.Hours.ToString()+"小时"
32                  + ts.Minutes.ToString()+"分钟"
33                  + ts.Seconds.ToString()+"";
34            
35              return dateDiff;
36          }
方法3

附录:

说明:
1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,你可以用DateTime值类型来描述任何在想象范围之内的时间。一个DateTime值代表了一个具体的时刻
2.TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值
下面的列表涵盖了其中的一部分:
Add:与另一个TimeSpan值相加。
Days:返回用天数计算的TimeSpan值。
Duration:获取TimeSpan的绝对值。
Hours:返回用小时计算的TimeSpan值
Milliseconds:返回用毫秒计算的TimeSpan值。
Minutes:返回用分钟计算的TimeSpan值。
Negate:返回当前实例的相反数。
Seconds:返回用秒计算的TimeSpan值。
Subtract:从中减去另一个TimeSpan值。
Ticks:返回TimeSpan值的tick数。
TotalDays:返回TimeSpan值表示的天数。
TotalHours:返回TimeSpan值表示的小时数。
TotalMilliseconds:返回TimeSpan值表示的毫秒数。
TotalMinutes:返回TimeSpan值表示的分钟数。
TotalSeconds:返回TimeSpan值表示的秒数。

====================================================
int jg=72;//设置一个增加的时间 DateTime dt=Convert.ToDateTime("2006-4-23 12:22:05");// 设置一个初始化的时间 DateTime newdt=dt.AddHours(jg);//初始化时间加上增加的时间 DateTime nowt=DateTime.Now;//现在的时间 Response.Write("现在时间是:"+nowt+"
"); Response.Write("数据库时间是:"+dt+"
"); Response.Write("新的时间是:"+newdt+"
"); if(newdt星期日"; case (int)DayOfWeek.Monday: return "星期一"; case (int)DayOfWeek.Tuesday: return "星期二"; case (int)DayOfWeek.Wednesday: return "星期三"; case (int)DayOfWeek.Thursday: return "星期四"; case (int)DayOfWeek.Friday: return "星期五"; case (int)DayOfWeek.Saturday: return "星期六"; default: return ""; } } // 得到某年某月的起止日期,格式为0000-00-00 public static string[] GetBeginEndDate(int rYear,int rMonth) { string[] arr = new string[2]; DateTime dt1 = DateTime.Parse(rYear+"-"+rMonth+"-01"); arr[0] = dt1.ToLongDateString(); DateTime dt2 = dt1.AddMonths(1).AddDays(-1); arr[1] = dt2.ToLongDateString(); return arr; } ========================== 在ASP中日期比较使用:DateDiff( "d", "2006-1-30", now )>0;在C#中使用:TimeSpan 代码如下: using System; using System.Collections; public class DatediffClass { public static void Main() { DateTime dt1 = DateTime.Parse("2006-04-01"); DateTime dt2 = DateTime.Parse("2006-05-01"); TimeSpan ts = dt2.Subtract(dt1); Console.WriteLine(ts.TotalDays); Console.ReadLine(); } } 如果是比较大小:DateTime.Compare(t1, t2) > 0 =================================== 1、DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.DateTime.Now; 1.2 取当前年 int 年=currentTime.Year; 1.3 取当前月 int 月=currentTime.Month; 1.4 取当前日 int 日=currentTime.Day; 1.5 取当前时 int 时=currentTime.Hour; 1.6 取当前分 int 分=currentTime.Minute; 1.7 取当前秒 int 秒=currentTime.Second; 1.8 取当前毫秒 int 毫秒=currentTime.Millisecond; (变量可用中文) 2、Int32.Parse(变量) Int32.Parse("常量") 字符型转换 转为32位数字型 3、 变量.ToString() 字符型转换 转为字符串 12345.ToString("n"); //生成 12,345.00 12345.ToString("C"); //生成 ¥12,345.00 12345.ToString("e"); //生成 1.234500e+004 12345.ToString("f4"); //生成 12345.0000 12345.ToString("x"); //生成 3039 (16进制) 12345.ToString("p"); //生成 1,234,500.00% 4、变量.Length 数字型 取字串长度: 如: string str="中国"; int Len = str.Length ; //Len是自定义变量, str是求测的字串的变量名 5、System.Text.Encoding.Default.GetBytes(变量) 字码转换 转为比特码 如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str); 然后可得到比特长度: len = bytStr.Length; 6、System.Text.StringBuilder("") 字符串相加,(+号是不是也一样?) 如:System.Text.StringBuilder sb = new System.Text.StringBuilder(""); sb.Append("中华"); sb.Append("人民"); sb.Append("共和国"); 7、变量.Substring(参数1,参数2); 截取字串的一部分,参数1为左起始位数,参数2为截取几位。 如:string s1 = str.Substring(0,2); 8、String user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString(); 取远程用户IP地址 9、穿过代理服务器取远程用户真实IP地址: if(Request.ServerVariables["HTTP_VIA"]!=null){ string user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); }else{ string user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString(); } 10、 Session["变量"]; 存取Session值; 如,赋值: Session["username"]="小布什"; 取值: Object objName=Session["username"]; String strName=objName.ToString(); 清空: Session.RemoveAll(); 11、String str=Request.QueryString["变量"]; 用超链接传送变量。 如在任一页中建超链接:点击 在Edit.aspx页中取值:String str=Request.QueryString["fdid"]; 12、DOC对象.CreateElement("新建节点名"); 创建XML文档新节点 13、父节点.AppendChild(子节点); 将新建的子节点加到XML文档父节点下 14、 父节点.RemoveChild(节点); 删除节点 15、Response Response.Write("字串"); Response.Write(变量); 向页面输出。 Response.Redirect("URL地址"); 跳转到URL指定的页面 16、char.IsWhiteSpce(字串变量,位数)——逻辑型 查指定位置是否空字符; 如: string str="中国 人民"; Response.Write(char.IsWhiteSpace(str,2)); //结果为:True, 第一个字符是0位,2是第三个字符。 17、char.IsPunctuation(‘字符‘) --逻辑型 查字符是否是标点符号 如:Response.Write(char.IsPunctuation(‘A‘)); //返回:False 18、(int)‘字符‘ 把字符转为数字,查代码点,注意是单引号。 如: Response.Write((int)‘中‘); //结果为中字的代码:20013 19、(char)代码 把数字转为字符,查代码代表的字符。

本篇不是原创,是从别人哪里学习来的!(也可以说抄的)不过不重要,
重要的是,可以让更多的人学到知识,解决问题就好了,希望可以帮助到你
附录:出处链接!


C#里比较时间大小的方法

标签:variables   null   img   ges   初始化   doc   begin   lap   months   

原文地址:http://www.cnblogs.com/yanran444/p/7905529.html


评论


亲,登录后才可以留言!