Ticks是一个周期,存储的是一百纳秒,换算为秒,一千万分之一秒。
我们需要计算2个时间之间,经过多少Ticks,可以使用下面的方法来实现,使用2个时间相减。

得到结果为正数,是使用较晚的时间减去较早的时间。反之为负数,即是使用较早的时间减去较晚的时间。

创建一个对象:

 class Ag{private DateTime _StartDate;public DateTime StartDate{get { return _StartDate; }set { _StartDate = value; }}private DateTime _EndDate;public DateTime EndDate{get { return _EndDate; }set { _EndDate = value; }}public Ag(DateTime startDate, DateTime endDate){this._StartDate = startDate;this._EndDate = endDate;}public void DurationTicks(){           TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine(ts.Ticks);}}

Source Code

在控制台应用程序运行上面写好的程序:

现在来了,实际情况并非都是计算2个时间之间的Ticks,而是有可能需要计算2个时间之间的秒,分钟,小时,天等。
为了实现上面的要求,我们得了解一些基础知识:
1天= 24;
1小时= 60分钟;
1分钟= 60秒;
1秒= 10000000Ticks;

因此,根据上面的计算结果(Ticks)和公式可以计算出2个时间之间的秒,分钟,小时,天等。

我们在类别中,添加下面4个方法:

 public void DurationSeconds(){TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine("Duraction Seconds: {0}", ts.Ticks / 10000000L);}public void DurationMinutes(){TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine("Duraction Minutes: {0}",ts.Ticks / (10000000L * 60));}public void DurationHours(){TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine("Duraction Hours: {0}", ts.Ticks / (10000000L * 60 * 60));}public void DurationDays(){TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine("Duraction Days: {0}", ts.Ticks / (10000000L * 60 * 60 * 24));}

Source Code

方法写完,在控制台测试一下上面的方法:

上面的计算方法有点原始,MSDN已经给出相应的方法,就可以计算出2个时间之间的秒,分钟,小时,天等。如:
TotalSeconds(),TotalMinutes(),TotalHours(),TotalDays();
为了演示与测试,Insus.NET再创建另外4个方法:

  public void TotalSeconds(){TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine("Duraction Seconds: {0}", ts.TotalSeconds);}public void TotalMinutes(){TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine("Duraction Minutes: {0}", ts.TotalMinutes);}public void TotalHours(){TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine("Duraction Hours: {0}", ts.TotalHours);}public void TotalDays(){TimeSpan ts = (_EndDate - _StartDate).Duration();Console.WriteLine("Duraction Days: {0}", ts.TotalDays);}

Source Code

再运行程序:

最后的现成的方法,它已经封装好单位转换与公式计算。

细心的用户有可以发现,2种结果有些不相同,没有小数和有小数。其实可以解决的,把一千万分之一秒这个基数转换为double数据类型即可。也就是说把能来的L-->D:

 public void DurationSeconds(){TimeSpan ts = (_EndDate - _StartDate).Duration();// Console.WriteLine("Duraction Seconds: {0}", ts.Ticks / 10000000L);Console.WriteLine("Duraction Seconds: {0}", ts.Ticks / 10000000D);}public void DurationMinutes(){TimeSpan ts = (_EndDate - _StartDate).Duration();//  Console.WriteLine("Duraction Minutes: {0}", ts.Ticks / (10000000L * 60));Console.WriteLine("Duraction Minutes: {0}", ts.Ticks / (10000000D * 60));}public void DurationHours(){TimeSpan ts = (_EndDate - _StartDate).Duration();// Console.WriteLine("Duraction Hours: {0}", ts.Ticks / (10000000L * 60 * 60));  Console.WriteLine("Duraction Hours: {0}", ts.Ticks / (10000000D * 60 * 60));}public void DurationDays(){TimeSpan ts = (_EndDate - _StartDate).Duration();// Console.WriteLine("Duraction Days: {0}", ts.Ticks / (10000000L * 60 * 60 * 24));   Console.WriteLine("Duraction Days: {0}", ts.Ticks / (10000000D * 60 * 60 * 24));}

Source Code

这次,我们再次运行程序,看看结果是否与自带的方法计算的结果相同:

OK,就这样子,你可以使用自带现成的方法,可以自己写。

写到这里应该是结果了,但是回过头来看看自己写的代码,有一句:

TimeSpan ts = (_EndDate - _StartDate).Duration();

每一个方法里均有,代码冗余了,我们可以简化它,写一个方法或是属性:

public TimeSpan Ts{get{return (_EndDate - _StartDate).Duration();}}public long Ticks{get{return Ts.Ticks;}}

Source Code

经过一次重构,8个方法里,只需要一句代码就行了:

计算2个时间之间经过多少Ticks相关推荐

  1. python时间差转换成天数_Python实现计算两个时间之间相差天数的方法

    本文实例讲述了Python实现计算两个时间之间相差天数的方法.分享给大家供大家参考,具体如下: #-*- encoding:UTF-8 -*- from datetime import date im ...

  2. 怎样计算两个时间之间的间隔

    怎样计算两个时间之间的间隔 1. 怎样计算两个时间之间的间隔? 间隔=Date1.getTime()-Date2.getTime();得出来的是毫秒数. 除1000是秒,再除60是分,再除60是小时. ...

  3. python pandas 怎么判断一天是否为工作日+计算距离特定时间之间的天数

    本文实现: ①计算距离特定时间之间的天数. ②时间是否为工作日. 准备数据: 数据采用的是一个平台的登录数据,包含登录的时间. 任务的要求是:选取用户最近的登录时间,同时判断距2020,6,18的天数 ...

  4. MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数

    计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现. 函数 TimeStampDiff() 是MySQL本身提供的 ...

  5. 计算两个时间之间的工作时长

    计算两个时间之间的工作时长(小时)排除周末 package com.test;import org.apache.commons.lang3.time.DateUtils;import java.ma ...

  6. 计算两个时间之间的小时数

    由于在项目中需要计算一个任务从创建到完成操作时的工时数,在网上找了很多方法,都不是我想要的,我需要计算的是小时,而网上很多都是两个时间之间相差多少天多少小时多少分钟多少秒,好不容易找到一个差不多是我想 ...

  7. python时间差计算器时分秒_Python实现计算两个时间之间相差天数的方法

    本文实例讲述了Python实现计算两个时间之间相差天数的方法.分享给大家供大家参考,具体如下: #-*- encoding:UTF-8 -*- from datetime import date im ...

  8. java 计算两个时间之间的间隔

    1. 怎样计算两个时间之间的间隔? 间隔=Date1.getTime()-Date2.getTime();得出来的是毫秒数. 除1000是秒,再除60是分,再除60是小时............... ...

  9. 使用Java的Calendar类计算两段时间之间的工作日的天/小时/分钟/秒数

    计算两段时间之间的工作日的天/小时/分钟/秒数 我们能经常遇到一些需求,让获取工作日的时间(当然,调休也上班也是工作日哈!),之前自己给这搞得头大,所以整理总结,把该工具类记录下来,希望大家能用到的时 ...

最新文章

  1. centos 7 安装 Vue
  2. Linux内核中大小端判定宏
  3. spring系列-注解驱动原理及源码-bean组件注册
  4. 英宝通4.0公开课---致力于提供最新的Unity3D技术
  5. 在python中使用关键字define定义函数_python等价于'define func()'或如何在python中注释掉函数调用...
  6. [html] 编写html时,你有没有用过Emmet插件呢?说说它的优点及规则有哪些?
  7. Swagger Learing - Spring Boot 整合swagger
  8. jmeter的分布式部署
  9. linux下hba卡服务,在Linux下查看FC HBA卡的速率和状态
  10. python_day24_class_类_继承
  11. 栈的应用(进制转换)
  12. html mysql 数据列表_html的列表加载数据库
  13. FreeTextBox编辑器的问题
  14. ZoomIt使用教程
  15. python图像边缘检测_Python进行图片水平边缘检测prewitt算子法
  16. web前端开发面试题(五)
  17. Android studio连接网易MuMu模拟器
  18. Datawhale组队学习周报(第031周)
  19. 杂谈 跟编程无关的事情10
  20. 动词ing形式的5种用法_动词-ing形式用法归纳

热门文章

  1. crlf注入漏洞 java解决办法_HTTP响应拆分漏洞(CRLF注入攻击)解决办法
  2. asp前端日历_asp显示日历效果
  3. java两二叉树相同_java – 最有效的方式来测试两个二叉树的相等性
  4. 线索二叉树怎么画_固原超级记忆技巧课程怎么学_蒙正智升教育
  5. window上远程访问linux上的neo4j的设置
  6. canvas在舞台上点击后图片旋转_View绘制系列(10)Canvas基础变换
  7. 抽象类(c++细节篇九)
  8. 信息系统项目管理师:第5章:项目范围管理(2)-重点汇总
  9. Git SSH Key生成,配置到GitHub 并测试
  10. el-input中设置onkeypress事件是否匹配正则表达式显示输入内容的格式