C# TimeSpan 计算时间差(时间间隔) - 就是个农民- 博客园
文章推薦指數: 80 %
TimeSpan 结构表示一个时间间隔。
命名空间:System 程序集:mscorlib(在mscorlib.dll 中) 说明: 1.DateTime值类型代表了一个从公元0001年1月1日0.
首页
新闻
博问
专区
闪存
班级
我的博客
我的园子
账号设置
简洁模式...
退出登录
注册
登录
就是个农民
C#TimeSpan计算时间差(时间间隔)
TimeSpan结构 表示一个时间间隔。
命名空间:System程序集:mscorlib(在mscorlib.dll中)
说明:1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。
因此,你可以用DateTime值类型来描述任何在想象范围之内的时间。
TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值,
其中的五个重载方法之一的结构TimeSpan(intdays,inthours,intminutes,intseconds)
下面的列表涵盖了其中的一部分方法及属性解释
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值表示的秒数。
代码实例
ViewCode
负数
上面是较晚的日期减较早的日期,所以各属性值为正数,如果是较早的日期减较晚的日期,则属性值为负数。
ASP.NET中,两个时间相减,得到一个TimeSpan实例,TimeSpan有一些属性:Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes、Seconds、TotalSeconds、Ticks,注意没有TotalTicks。
举例说明
•时间1是2010-1-28:43:35;
时间2是2010-1-128: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。
以下提供一些常用的方法
求离最近发表时间的函数publicstringDateStringFromNow(DateTimedt){TimeSpanspan=DateTime.Now-dt;if(span.TotalDays>60){returndt.ToShortDateString();}elseif(span.TotalDays>30){return"1个月前";}elseif(span.TotalDays>14){return"2周前";}elseif(span.TotalDays>7){return"1周前";}elseif(span.TotalDays>1){returnstring.Format("{0}天前",(int)Math.Floor(span.TotalDays));}elseif(span.TotalHours>1){returnstring.Format("{0}小时前",(int)Math.Floor(span.TotalHours));}elseif(span.TotalMinutes>1){returnstring.Format("{0}分钟前",(int)Math.Floor(span.TotalMinutes));}elseif(span.TotalSeconds>=1){returnstring.Format("{0}秒前",(int)Math.Floor(span.TotalSeconds));}
else{return"1秒前";}}C#中使用TimeSpan计算两个时间的差值可以反加两个日期之间任何一个时间单位。
privatestringDateDiff(DateTimeDateTime1,DateTimeDateTime2){stringdateDiff=null;TimeSpants1=newTimeSpan(DateTime1.Ticks);TimeSpants2=newTimeSpan(DateTime2.Ticks);TimeSpants=ts1.Subtract(ts2).Duration();dateDiff=ts.Days.ToString()+"天"+ts.Hours.ToString()+"小时"+ts.Minutes.ToString()+"分钟"+ts.Seconds.ToString()+"秒";returndateDiff;}
TimeSpants=Date1-Date2;
doubledDays=ts.TotalDays;//带小数的天数,比如1天12小时结果就是1.5
比如1天12小时结果就是1.5
intnDays=ts.Days;//整数天数,1天12小时或者1天20小时结果都是1
///
2.Date数值中的日期数据可有可无,如果有必须符合格式"m/d/yyyy"。
3.Date数值中的时间数据可有可无,如果有必须和日期数据通过空格分开,并且时分秒之间以":"分开。
一.DateTime和TimeSpan的关系和区别:
DateTime和TimeSpan是VisualBasic.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将此实例的值转换为其等效的短日期字符串表示形式。
简单的后台计算
TimeSpants=Convert.ToDateTime("2016-12-1317:09:47.223")-Convert.ToDateTime("2016-12-1313:36:10.023");
intspend_time=Convert.ToInt32(ts.TotalMinutes);
返回分钟时间
posted@
2016-12-1316:34
就是个农民
阅读(119592)
评论(0)
编辑
收藏
举报
刷新评论刷新页面返回顶部
Copyright©2022就是个农民
Poweredby.NET6onKubernetes
延伸文章資訊
- 1C#常用類(三) DateTime與TimeSpan類 - 台部落
參考或轉載至:MSDN、C#中比較常用的DateTime結構的使用方法、C#的TimeSpan介紹1 DateTime 常見用法1.1DateTime常見屬性序號屬性名解釋1 Now 獲取 ...
- 2TimeSpan 建構函式(System)
將TimeSpan 結構的新執行個體初始化為指定的時數、分鐘數和秒數。 public: TimeSpan(int hours, int minutes, int seconds);. C# 複製.
- 3TimeSpan 結構(System) | Microsoft Docs
下列範例會具現化TimeSpan 表示兩個日期之間差異的物件。 然後,它會顯示TimeSpan 物件的屬性。 C# 複製.
- 4C# TimeSpan 计算时间差(时间间隔) - 就是个农民- 博客园
TimeSpan 结构表示一个时间间隔。 命名空间:System 程序集:mscorlib(在mscorlib.dll 中) 说明: 1.DateTime值类型代表了一个从公元0001年1月1日0.
- 5C#通俗易懂教程之TimeSpan结构 - 我爱捣鼓
C#两个时间相减,得到一个TimeSpan 实例,TimeSpan 有一些属性:Days、TotalDays、Hours、TotalHours、Minutes、TotalMinutes、Seco...