当前位置:首页 > 通信资讯 > 正文

c# timespan 相减(c#datetime计算时间间隔)

timespan 结构 表示一个时间间隔。

命名空间:system 程序集:mscorlib(在 mscorlib.dll 中)

说明: 1.datetime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。因此,你可以用datetime值类型来描述任何在想象范围之内的时间。timespan值包含了许多属性与方法,用于访问或处理一个timespan值,

其中的五个重载方法之一的结构 timespan( int days, int hours, int minutes, int seconds )

下面的列表涵盖了其中的一部分方法及属性解释

  • 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值表示的秒数。

代码实例

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 timespan ts = new timespan(12, 12, 11, 12, 21); int days = new timespan(12, 12, 11, 12, 21).days; timespan duration = new timespan(-12, 12, 11, 12, 21).duration();//24小时的反值 double totaldays = new timespan(12, 12, 11, 12, 21).totaldays; double totalhours = new timespan(2, 12, 11, 12, 21).totalhours; int hours = new timespan(12, 12, 11, 12, 21).hours; int minutes = new timespan(12, 12, 11, 12, 21).minutes; timespan ts2 = new timespan(1, 3, 01, 12, 21); // timespan ts2 = new timespan(5, 3, 1, 12, 21);//this is also right timespan ts3 = new timespan(5, 3, 01, 12, 21).add(ts); timespan ts4 = new timespan(4, 3, 01, 12, 21).subtract(ts); timespan ts5 = new timespan(4, 3, 01, 12, 21).subtract(ts).duration(); timespan negate = new timespan(5, 3, 01, 12, 21).negate(); datetime dtnow = datetime.now; console.writeline(ts); console.writeline(days); console.writeline(duration); console.writeline(totaldays); console.writeline(totalhours); console.writeline(hours); console.writeline(minutes); console.writeline(ts2); console.writeline(ts+ts2); console.writeline(ts3); console.writeline("subtract:"+ts4); console.writeline("duration:" + ts5); console.writeline(ts - ts2); console.writeline(negate); datetime span = datetime.now.add(ts2); timespan spdate = span - datetime.now; long dateticks = datetime.now.add(ts2).ticks; console.writeline(span); console.writeline(spdate); console.writeline(dateticks);

c# timespan 相减(c#datetime计算时间间隔)

负数

上面是较晚的日期减较早的日期,所以各属性值为正数,如果是较早的日期减较晚的日期,则属性值为负数。

asp.net 中,两个时间相减,得到一个 timespan 实例,timespan 有一些属性:days、totaldays、hours、totalhours、minutes、totalminutes、seconds、totalseconds、ticks,注意没有 totalticks。

举例说明

时间 1 是 2010-1-2 8:43:35;

时间 2 是 2010-1-12 8:43:34。

用时间 2 减时间 1,得到一个 timespan 实例。

那么时间 2 比时间 1 多 9 天 23 小时 59 分 59 秒。

那么,days 就是 9,hours 就是 23,minutes 就是 59,seconds 就是 59。

再来看 ticks,tick 是一个计时周期,表示一百纳秒,即一千万分之一秒,那么 ticks 在这里表示总共相差多少个时间周期,即:9 * 24 * 3600 * 10000000 + 23 * 3600 * 10000000 +59 * 60 * 10000000 + 59 * 10000000 = 8639990000000。3600 是一小时的秒数。

totaldays 就是把 ticks 换算成日数,即:8639990000000 / (10000000 * 24 * 3600) = 9.99998842592593。

totalhours 就是把 ticks 换算成小时数,即:8639990000000 / (10000000 * 3600) = 239.999722222222。

totalminutes 就是把 ticks 换算成分钟数,即:8639990000000 / (10000000 * 60) = 14399.9833333333。

totalseconds 就是把 ticks 换算成秒数,即:8639990000000 / (10000000) = 863999。

以下提供一些常用的方法

求离最近发表时间的函数

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 public string datestringfromnow(datetime dt) { timespan span = datetime.now - dt; if (span.totaldays > 60) { return dt.toshortdatestring(); } else if ( span.totaldays > 30 ) { return "1个月前"; } else if (span.totaldays > 14) { return "2周前"; } else if (span.totaldays > 7) { return "1周前"; } else if (span.totaldays > 1) { return string.format("{0}天前", (int)math.floor(span.totaldays)); } else if (span.totalhours > 1) { return string.format("{0}小时前", (int)math.floor(span.totalhours)); } else if (span.totalminutes > 1) { return string.format("{0}分钟前", (int)math.floor(span.totalminutes)); } else if (span.totalseconds >= 1) { return string.format("{0}秒前", (int)math.floor(span.totalseconds)); } else { return "1秒前"; } }

c#中使用timespan计算两个时间的差值

可以反加两个日期之间任何一个时间单位。

?
1 2 3 4 5 6 7 8 9 10 11 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; } timespan ts = date1 - date2; double ddays = ts.totaldays;//带小数的天数,比如1天12小时结果就是1.5

比如1天12小时结果就是1.5

int ndays = ts.days;//整数天数,1天12小时或者1天20小时结果都是1

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /// <summary> /// 日期比较 /// </summary> /// <param name="today">当前日期</param> /// <param name="writedate">输入日期</param> /// <param name="n">比较天数</param> <returns>大于天数返回true,小于返回false</returns> private bool comparedate(string today, string writedate, int n) { datetime today = convert.todatetime(today); datetime writedate = convert.todatetime(writedate); writedate = writedate.adddays(n); if (today>= writedate) return false; else return true; }

在定义date数据类型时候,必须注意下面三点:

1. date数值必须以数字符号"#"括起来。

2. date数值中的日期数据可有可无,如果有必须符合格式"m/d/yyyy"。

3. date数值中的时间数据可有可无,如果有必须和日期数据通过空格分开,并且时分秒之间以":"分开。

一.datetime和timespan的关系和区别:

datetime和timespan是visual basic .net中用以处理时间日期类型数据的二个主要的结构,这二者的区别在于,dattime表示一个固定的时间,而timespan表示的是一个时间间隔, 即一段时间。在下面介绍的程序示例中,timespan就用以当前时间和给定时间之差。

二.datetime和timespan中的常用成员及其说明:

datetime结构和timespan结构提供了丰富的方法和属性,

属性 说明

  • date 获取此实例的日期部分。
  • day 获取此实例所表示的日期为该月中的第几天。
  • dayofweek 获取此实例所表示的日期是星期几。
  • dayofyear 获取此实例所表示的日期是该年中的第几天。
  • hour 获取此实例所表示日期的小时部分。
  • millisecond 获取此实例所表示日期的毫秒部分。
  • minute 获取此实例所表示日期的分钟部分。
  • month 获取此实例所表示日期的月份部分。
  • now 创建一个datetime实例,它是此计算机上的当前本地日期和时间。
  • second 获取此实例所表示日期的秒部分。
  • timeofday 获取此实例的当天的时间。
  • today 获取当前日期。
  • year 获取此实例所表示日期的年份部分。
  • add 将指定的timespan的值加到此实例的值上。
  • adddays 将指定的天数加到此实例的值上。
  • addhours 将指定的小时数加到此实例的值上。
  • addmilliseconds 将指定的毫秒数加到此实例的值上。
  • addminutes 将指定的分钟数加到此实例的值上。
  • addmonths 将指定的月份数加到此实例的值上。
  • addseconds 将指定的秒数加到此实例的值上。
  • addyears 将指定的年份数加到此实例的值上。
  • daysinmonth 返回指定年份中指定月份的天数。
  • isleapyear 返回指定的年份是否为闰年的指示。
  • parse 将日期和时间的指定字符串表示转换成其等效的datetime实例。
  • subtract 从此实例中减去指定的时间或持续时间。
  • tolongdatestring 将此实例的值转换为其等效的长日期字符串表示形式。
  • tolongtimestring 将此实例的值转换为其等效的长时间字符串表示形式。
  • toshorttimestring 将此实例的值转换为其等效的短时间字符串表示形式。
  • toshortdatestring 将此实例的值转换为其等效的短日期字符串表示形式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://www.cnblogs.com/qinpengming/p/3265579.html

如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

为您推荐:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。