从TimeSpan说起
小编在编写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说起相关推荐
- ASP.NET中TimeSpan的用法
ASP.NET 中,两个时间相减,得到一个 TimeSpan 实例,TimeSpan 有一些属性:Days.TotalDays.Hours.TotalHours.Minutes.TotalMinute ...
- TimeSpan 时间间隔
[C#] [Serializable] public struct TimeSpan : IComparable 备注 TimeSpan 实例的值表示一个时间段.该值是实例中包含的刻度数,其范围可以在 ...
- C# 计算时间差 用timespan函数
转自: TimeSpan 结构 表示一个时间间隔. 命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 1.DateTime值类型代表了一个从公元0001年1月1日 ...
- TimeSpan 用法 求离最近发表时间的函数
求离最近发表时间的函数 public string DateStringFromNow(DateTime dt) { TimeSpan span = DateTime.Now - dt ...
- 求计算两个时间的差(DateTime类和TimeSpan类)
日期时间数据是项目设计过程中经常需要处理的信息,C#提供了DateTime类和TimeSpan类来处理日期时间数据.下面介绍说明Datetime类和TimeSpan类的使用 //初始化DateTime ...
- C#里如何使用Timespan(计算时间差)
TimeSpan一个很好的时间计算类 eg1.DateTime dt1 = DateTime.Now; DateTime dt2 = DateTime.Now.Add ...
- C# --- 用TimeSpan计算时间
1.TimeSpan结构:表示一个时间间隔. 2.命名空间为 System 程序集:mscorlib(在mscorlib.dll中) 3..说明:DateTime值类型代表了一个从公元0001年1 ...
- .Net时间运算 - DateTime类,TimeSpan类
DateTime类是.Net中用于处理时间类型数据的. 一.字段 MaxValue 表示 DateTime 的最大可能值.此字段为只读. MinValue 表示 DateTime 的最小可能值 ...
- Dev GridView网格中格式化 TimeSpan
Dev官网 RepositoryItemTimeSpanEdit 结果如下: 问题描述: 现在有一个TimeSpan 短时间 需要在表格中格式化成 d天hh时mm分 尝试了很多方法 都没成功 如: 多 ...
最新文章
- html与java接口_html用ajax请求服务器后端java接口跨域问题解决
- SPOJ - LCS Longest Common Substring(后缀自动机)
- 使用Azure轻松实现Teams App的全球合规性
- PHP5.5中新增的参数跳跃和生成器功能介绍
- 7-8 菲波那契数列 (15 分)
- Bootstrap图片中加播放按钮
- 高性能MySQL(呕心沥血整理万字长文)
- 广告终结者chinalist-easylist语法规则
- 重要文件即时搞定,不用插电就能打印,汉印MT800移动便携打印机上手
- 微博登录设备有python_Python搜寻器如何登录新浪微博并获取内容?
- 51单片机控制蜂鸣器播放《梧桐树》
- 成都亚马逊AWSome Day回顾
- 2017-2018-2 20179306 《网络攻防技术》第八周作业
- 【MATLAB】铰链四杆机构运动分析(GUI设计)
- Python/Basemap绘制美国人口分布示意图
- php如何计算天数,php计算日期相差天数二种方法
- 数据类型,栈内存、堆内存
- 电脑硬盘速度明显变慢的原因
- Paper Note - 基于高效数据流标记和跟踪的可精炼跨主机攻击调查
- python图片马赛克_利用Python来打马赛克!少儿不宜的东西永不再有!就是这么牛逼!...
热门文章
- 关于IE某些原因导致下拉列表弹出阻止窗口的解决办法
- Membership学习记录
- java注解类型_Java注解类型
- MySql:从任何主机授予根用户登录权限
- redis系列3---理解内存
- oneproxy检测主从复制同步延迟
- List 集合转换为String
- 解决 web.xml is missing and failOnMissingWebXml is set to true 报错
- InfoQ —— 腾讯游戏大数据服务场景与应用
- centos服务器解决vsftp连接时的“550 Create directory operation failed.”错误