当前位置: 首页 > 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.gsyq.cn/news/1644084.html

相关文章:

  • 如何新建html文件
  • Spring Security OAuth2 Resource Server:JWT 鉴权与权限映射实战
  • Visual C++运行库终极解决方案:一键修复Windows系统兼容性问题
  • 逆向学习:我为什么放着文档不看,直接读字节码
  • 早上,邮递员送来的时候,我还在梦中。
  • IR2104 半桥 BUCK 电路 PCB 布局:3 个关键布线规则解决开关尖峰与振荡
  • iNeuOS工业互联网操作系统
  • Edge/Chrome 开发者工具获取京东 Cookie:3 步定位 pt_key/pt_pin 的完整流程
  • Linux find 命令性能深度解析:对比 locate 与 fd 的 3 大场景实测
  • 2026北京活动策划公司口碑榜与政企会务优选指南
  • 从演示到生产:AI 编程工具链在大模型应用落地中的工程化实践
  • 知识加工模块与博客工厂模块的状态重新定义
  • DB2 11.5 Windows 10 安装避坑 3 要点:家庭版系统安全性与驱动下载
  • Unity UGUI ScrollRect 与 Mask 组合:5个高级交互效果实现(含惯性/回弹)
  • Dragonfly2安全机制深度剖析:TLS证书与OAuth2访问控制实战
  • 通信与接口协议面试七、RS232
  • 你的 AI Agent 会在服务器上“修仙“——OpenClaw.NET 长持久会话技术解读
  • 卡梅德生物技术快报|构建噬菌体肽库:全质粒 PCR 克隆优化、NGS 序列偏倚分析与淘选数据定量解析
  • TD3 vs SAC vs DDPG:3 种连续控制算法在 5 个 MuJoCo 任务上的性能对比
  • 某次热身赛re方向wp
  • 9大网盘直链解析工具:开源解决方案如何提升工作效率300%
  • MySQL库与表的操作
  • 《Python + Streamlit + DeepSeek API 实现一个本地文档问答助手》
  • NVIDIA 驱动 551.86 与 CUDA 12.4 版本匹配指南:Windows 深度学习环境搭建避坑 3 要点
  • Dify低代码AI开发平台:从零部署到工作流实战全指南
  • MatAnyone:无需绿幕的AI视频抠像神器,轻松实现专业级视频背景分离
  • 达朗贝尔公式与特征线法:一维波动方程依赖区间与决定区域图解
  • CUDA 12.4 + cuDNN 8.9 环境配置:Windows/Linux 双系统 5 步验证法
  • 本地AI绘图新范式:Codex与Cowart插件实现指哪改哪交互式创作
  • 《数据库系统概论》第6版 vs 第5版:3大核心内容更新与SQL Server/Oracle 23版适配