小编在编写WPF程序时,需要做一个判断:定时使用Modbus协议使用Quartz.net 定时任务读取设备中的数据,同时也使用定时任务判断是否长时间获取不到数据的情况,如果程序中超过一分钟没有获取到数据(数据没有更新),则认为已经掉线。因此在类中使用了 DateTime类型数据记录获取数据的时间。

判断是否在线使用了当前时间减去获取数据的时间,类似于这样:

RunningTime = DateTime.MinValue;
var x = DateTime.Now - RunningTime;
var y = x.Minutes>1?"连接断开":"连接正常";

上述 x的类型为 TimeSpan。那么问题就从这里埋下了。

问题再现

出现问题的时间点:在不连接设备时,保持程序在运行状态,整点时间时出现的时候就会出现连接正常的状态,通过日志进行分析,发现整点时,分钟为0,与时间最小值做完运算后得到的 x.Minutes的值就为 0,因此出现连接正常的情况。

解决方法

通过TimeSpan的文档发现 TimeSpan中的属性如下:

属性 解释
Days 获取当前 TimeSpan 结构所表示的时间间隔的天数部分。
Hours 获取当前 TimeSpan 结构所表示的时间间隔的小时数部分。
Milliseconds 获取当前 TimeSpan 结构所表示的时间间隔的毫秒数部分。
Minutes 获取当前 TimeSpan 结构所表示的时间间隔的分钟数部分。
Seconds 获取当前 TimeSpan 结构所表示的时间间隔的秒数部分。
Ticks 获取表示当前 TimeSpan 结构的值的刻度数。
TotalDays 获取以整天数和天的小数部分表示的当前 TimeSpan 结构的值。
TotalHours 获取以整小时数和小时的小数部分表示的当前 TimeSpan 结构的值。
TotalMilliseconds 获取以整毫秒数和毫秒的小数部分表示的当前 TimeSpan 结构的值。
TotalMinutes 获取以整分钟数和分钟的小数部分表示的当前 TimeSpan 结构的值。
TotalSeconds 获取以整秒数和秒的小数部分表示的当前 TimeSpan 结构的值。

通过 TimeSpan的属性发现,按分钟比较需要使用 TotalMinutes属性才可以。

说明

在通过时间运算方法使用 TimeSpan作比较时,要特别注意。还有,有事没事要多看相关文档才可以。

从TimeSpan说起相关推荐

  1. ASP.NET中TimeSpan的用法

    ASP.NET 中,两个时间相减,得到一个 TimeSpan 实例,TimeSpan 有一些属性:Days.TotalDays.Hours.TotalHours.Minutes.TotalMinute ...

  2. TimeSpan 时间间隔

    [C#] [Serializable] public struct TimeSpan : IComparable 备注 TimeSpan 实例的值表示一个时间段.该值是实例中包含的刻度数,其范围可以在 ...

  3. C# 计算时间差 用timespan函数

    转自: TimeSpan 结构  表示一个时间间隔. 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 1.DateTime值类型代表了一个从公元0001年1月1日 ...

  4. TimeSpan 用法 求离最近发表时间的函数

    求离最近发表时间的函数 public string DateStringFromNow(DateTime dt)     {     TimeSpan span = DateTime.Now - dt ...

  5. 求计算两个时间的差(DateTime类和TimeSpan类)

    日期时间数据是项目设计过程中经常需要处理的信息,C#提供了DateTime类和TimeSpan类来处理日期时间数据.下面介绍说明Datetime类和TimeSpan类的使用 //初始化DateTime ...

  6. C#里如何使用Timespan(计算时间差)

    TimeSpan一个很好的时间计算类 eg1.DateTime   dt1   =   DateTime.Now;      DateTime   dt2   =   DateTime.Now.Add ...

  7. C# --- 用TimeSpan计算时间

    1.TimeSpan结构:表示一个时间间隔. 2.命名空间为 System   程序集:mscorlib(在mscorlib.dll中) 3..说明:DateTime值类型代表了一个从公元0001年1 ...

  8. .Net时间运算 - DateTime类,TimeSpan类

    DateTime类是.Net中用于处理时间类型数据的. 一.字段 MaxValue 表示 DateTime 的最大可能值.此字段为只读. MinValue     表示 DateTime 的最小可能值 ...

  9. Dev GridView网格中格式化 TimeSpan

    Dev官网 RepositoryItemTimeSpanEdit 结果如下: 问题描述: 现在有一个TimeSpan 短时间 需要在表格中格式化成 d天hh时mm分 尝试了很多方法 都没成功 如: 多 ...

最新文章

  1. html与java接口_html用ajax请求服务器后端java接口跨域问题解决
  2. SPOJ - LCS Longest Common Substring(后缀自动机)
  3. 使用Azure轻松实现Teams App的全球合规性
  4. PHP5.5中新增的参数跳跃和生成器功能介绍
  5. 7-8 菲波那契数列 (15 分)
  6. Bootstrap图片中加播放按钮
  7. 高性能MySQL(呕心沥血整理万字长文)
  8. 广告终结者chinalist-easylist语法规则
  9. 重要文件即时搞定,不用插电就能打印,汉印MT800移动便携打印机上手
  10. 微博登录设备有python_Python搜寻器如何登录新浪微博并获取内容?
  11. 51单片机控制蜂鸣器播放《梧桐树》
  12. 成都亚马逊AWSome Day回顾
  13. 2017-2018-2 20179306 《网络攻防技术》第八周作业
  14. 【MATLAB】铰链四杆机构运动分析(GUI设计)
  15. Python/Basemap绘制美国人口分布示意图
  16. php如何计算天数,php计算日期相差天数二种方法
  17. 数据类型,栈内存、堆内存
  18. 电脑硬盘速度明显变慢的原因
  19. Paper Note - 基于高效数据流标记和跟踪的可精炼跨主机攻击调查
  20. python图片马赛克_利用Python来打马赛克!少儿不宜的东西永不再有!就是这么牛逼!...

热门文章

  1. 关于IE某些原因导致下拉列表弹出阻止窗口的解决办法
  2. Membership学习记录
  3. java注解类型_Java注解类型
  4. MySql:从任何主机授予根用户登录权限
  5. redis系列3---理解内存
  6. oneproxy检测主从复制同步延迟
  7. List 集合转换为String
  8. 解决 web.xml is missing and failOnMissingWebXml is set to true 报错
  9. InfoQ —— 腾讯游戏大数据服务场景与应用
  10. centos服务器解决vsftp连接时的“550 Create directory operation failed.”错误