当前位置: 首页 > news >正文

时刻 ShortTime --ESBasic 可复用的.NET类库(01)

假设我们的员工打卡系统,需要设定公司规定的上班时间、下班时间、以及还要对员工是否迟到早退等这些情况进行判断。

我们以什么方式来记录类似上下班时间这样只有时分秒没有年月日的时间了?你说可以使用DateTime,但是合适吗?总是觉得用DateTime来表示上下班的时间很别扭,因为我们的上下班时间并需要指定到具体的哪一天啊。

我设计了ESBasic.ShortTime来对类似上下班时间的概念进行抽象。ShortTime只有时分秒三个必需的属性,不必再牵扯到日期。

ShortTime的形象示意图如下:

Hour

Minute

Second

2.适用场合:

任何只需要使用时分秒来表示时刻的场合。

3.设计思想与实现

ShortTime的设计与实现都是相当简单的,其类图如下:


ShortTime有Hour、Minute、Second三个属性,Hour采用24小时制,取值范围为0~23,Minute和Second的取值范围都是0~59。如果在设置这些属性的值超过了其自身的取值范围,属性的set方法会自动将其修正到正确的值。

ShortTime实现了IComparable泛型接口,表示ShortTime对象之间可以相互比较。ShortTime所表示的时刻的值越大,则ShortTime就越大,这是完全一致的。

ShortTime是可序列化的,表示可以通过Remoting进行远程传递。

ShortTime提供了一个非常有用的方法IsOnTime,用于判断是否到了指定的时刻。该方法接受两个参数:target和maxToleranceInSecs,target即是与当前对象进行比较的目标,maxToleranceInSecs表示认为当前对象与target所表示的时间是同一时刻所允许的最大误差(单位为秒)。比如,maxToleranceInSecs取值为3秒,那么22:15:00与22:15:02就被认为是同一时刻,IsOnTime方法将返回true。

4.使用时的注意事项

(1)ShortTime的精度只能到秒,不能记录毫秒、微秒等更小的精度。

(2)IsOnTime方法的maxToleranceInSecs参数的取值是由我们的系统需求所能允许的最大时刻误差来决定了。比如,你的轮询引擎是每隔5秒钟检测一次是否到了指定的时刻,那么在这种情况下maxToleranceInSecs参数就应该设置为5,而不是更大或更小。

5.扩展

我们可以将表示上班时间的ShortTime对象和表示下班时间的ShortTime对象组合成一

http://www.jsqmd.com/news/1132102/

相关文章:

  • 如何新建html文件
  • WarcraftHelper:魔兽争霸3终极优化指南,让你的经典游戏重获新生!
  • Linux字符设备驱动开发实战:从Hello World到内核交互
  • kernel.org 突发内核文件“消失“:Linux基金会确认配置失误,全球镜像同步触发连锁反应
  • SnapClick 1.1.1 更新速递:右键秒开 / 多编辑器打开 / 录屏 HUD / 毛玻璃透明度
  • IDEA集成GitHub
  • 数据分析实战:销售数据洞察
  • 非线性字符串数据结构串讲
  • AtomCode 实测:用 3 个真实项目验证它到底强在哪
  • Spring Security OAuth2 Resource Server:JWT 鉴权与权限映射实战
  • 逆向学习:我为什么放着文档不看,直接读字节码
  • 深入了解CLR的加载过程
  • 使用过正规新能源企业 GEO 优化服务团队,效果究竟咋样?
  • Meta、Google、Adobe隐形水印算法大翻车!误报率远高于宣称
  • Visual C++运行库终极解决方案:一键修复Windows系统兼容性问题
  • 前端day4
  • IR2104 半桥 BUCK 电路 PCB 布局:3 个关键布线规则解决开关尖峰与振荡
  • c#基础内容:泛型、线程、委托、流
  • 早上,邮递员送来的时候,我还在梦中。
  • 经典题目(2):最长公共子序列;最长公共子串
  • 真的领到了这张8元现金券
  • 2026 内容创作类 AI 赛道全新红利(分短视频、图文绘画、AI 音乐、通用自动化四大板块,全部是今年落地可变现风口)
  • OpenCode × DeepSeek 配置方案迭代记:砍砍补补,越来越好用
  • Ubuntu系统向日葵远程桌面配置指南
  • iNeuOS工业互联网操作系统
  • 大部分管理信息系统(MIS)都少不了员工
  • 昆仑芯的“第三条路”
  • Week7:卷积神经网络、深度网络原理与循环神经网络专题
  • Linux find 命令性能深度解析:对比 locate 与 fd 的 3 大场景实测
  • Unity AssetBundle 加密方案对比:3种主流方法性能开销与安全性实测