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

一· 比较时间大小的实验

string st1="12:13";
string st2="14:14";
DateTime dt1=Convert.ToDateTime(st1);
DateTime dt2=Convert.ToDateTime(st2);
DateTime dt3=DateTime.Now;
if(DateTime.Compare(dt1,dt2)>0)
msg.Text=st1+">"+st2;
else
msg.Text=st1+"<"+st2;
msg.Text+="\r\n"+dt1.ToString();
if(DateTime.Compare(dt1,dt3)>0)
msg.Text+="\r\n"+st1+">"+dt3.ToString();
else
msg.Text+="\r\n"+st1+"<"+dt3.ToString();

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

private string DateDiff(DateTime DateTime1,DateTime DateTime2)
{
string dateDiff=null;
try
{
TimeSpan ts1=new TimeSpan(DateTime1.Ticks);
TimeSpan ts2=new TimeSpan(DateTime2.Ticks);
TimeSpan ts=ts1.Subtract(ts2).Duration();
dateDiff=ts.Days.ToString()+"天"
+ts.Hours.ToString()+"小时"
+ts.Minutes.ToString()+"分钟"
+ts.Seconds.ToString()+"秒";
}
catch
{
}
return dateDiff;
}

3。实现计算DateTime1-36天=DateTime2的功能

TimeSpan ts=new TimeSpan(40,0,0,0);

DateTime dt2=DateTime.Now.Subtract(ts);

msg.Text=DateTime.Now.ToString()+"-"+ts.Days.ToString()+"天\r\n";

msg.Text+=dt2.ToString();

use "DateTime.Compare" static method
DateTime.Compare( dt1, dt2 ) > 0 : dt1 > dt2
DateTime.Compare( dt1, dt2 ) == 0 : dt1 == dt2
DateTime.Compare( dt1, dt2 ) < 0 : dt1 < dt2
        /// <summary>
         /// 计算两个日期的时间间隔
         /// </summary>
         /// <param name="DateTime1">第一个日期和时间</param>
         /// <param name="DateTime2">第二个日期和时间</param>
         /// <returns></returns>
         private string DateDiff(DateTime DateTime1, DateTime DateTime2)
         {
             string dateDiff = null; 
             TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
             TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
             TimeSpan ts = ts1.Subtract(ts2).Duration();
             dateDiff = ts.Days.ToString()+"天"
                 + ts.Hours.ToString()+"小时"
                 + ts.Minutes.ToString()+"分钟"
                 + ts.Seconds.ToString()+"秒";
             return dateDiff;
     } 

说明:
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+"<br>");
Response.Write("数据库时间是:"+dt+"<br>");
Response.Write("新的时间是:"+newdt+"<br>");
if(newdt<nowt)//如果相加后的时间大于现在的时间
{
 Response.Write("可以");
}
else//否则
{
 Response.Write("不行");
}

======================================================

// 得到某年某月的天数
   public static int GetDaysInMonth(int rYear,int rMonth)
   {
    DateTime dt1 = DateTime.Parse(rYear+"-"+rMonth+"-01");
    DateTime dt2 = dt1.AddMonths(1);
    TimeSpan ts = dt2-dt1;
    return (int)ts.TotalDays;
   }

//得到星期Text
   public static string GetDayOfWeekHtml(int rDayOfWeek)
   {
    switch(rDayOfWeek)
    {
     case (int)DayOfWeek.Sunday:
      return "<font color=\"#ff0000\">星期日</font>";
     case (int)DayOfWeek.Monday:
      return "<font color=\"#000000\">星期一</font>";
     case (int)DayOfWeek.Tuesday:
      return "<font color=\"#000000\">星期二</font>";
     case (int)DayOfWeek.Wednesday:
      return "<font color=\"#000000\">星期三</font>";
     case (int)DayOfWeek.Thursday:
      return "<font color=\"#000000\">星期四</font>";
     case (int)DayOfWeek.Friday:
      return "<font color=\"#000000\">星期五</font>";
     case (int)DayOfWeek.Saturday:
      return "<font color=\"#008800\">星期六</font>";
     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[“变量”];
用超链接传送变量。
如在任一页中建超链接:<a href=Edit.aspx?fbid=23>点击
在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

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值