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

发布时间:2026/7/6 2:51:04
时刻 ShortTime --ESBasic 可复用的.NET类库(01) 假设我们的员工打卡系统需要设定公司规定的上班时间、下班时间、以及还要对员工是否迟到早退等这些情况进行判断。我们以什么方式来记录类似上下班时间这样只有时分秒没有年月日的时间了你说可以使用DateTime但是合适吗总是觉得用DateTime来表示上下班的时间很别扭因为我们的上下班时间并需要指定到具体的哪一天啊。我设计了ESBasic.ShortTime来对类似上下班时间的概念进行抽象。ShortTime只有时分秒三个必需的属性不必再牵扯到日期。ShortTime的形象示意图如下HourMinuteSecond2.适用场合任何只需要使用时分秒来表示时刻的场合。3设计思想与实现ShortTime的设计与实现都是相当简单的其类图如下ShortTime有Hour、Minute、Second三个属性Hour采用24小时制取值范围为0~23Minute和Second的取值范围都是0~59。如果在设置这些属性的值超过了其自身的取值范围属性的set方法会自动将其修正到正确的值。ShortTime实现了IComparable泛型接口表示ShortTime对象之间可以相互比较。ShortTime所表示的时刻的值越大则ShortTime就越大这是完全一致的。ShortTime是可序列化的表示可以通过Remoting进行远程传递。ShortTime提供了一个非常有用的方法IsOnTime用于判断是否到了指定的时刻。该方法接受两个参数target和maxToleranceInSecstarget即是与当前对象进行比较的目标maxToleranceInSecs表示认为当前对象与target所表示的时间是同一时刻所允许的最大误差单位为秒。比如maxToleranceInSecs取值为3秒那么22:15:00与22:15:02就被认为是同一时刻IsOnTime方法将返回true。4.使用时的注意事项1ShortTime的精度只能到秒不能记录毫秒、微秒等更小的精度。2IsOnTime方法的maxToleranceInSecs参数的取值是由我们的系统需求所能允许的最大时刻误差来决定了。比如你的轮询引擎是每隔5秒钟检测一次是否到了指定的时刻那么在这种情况下maxToleranceInSecs参数就应该设置为5而不是更大或更小。5.扩展我们可以将表示上班时间的ShortTime对象和表示下班时间的ShortTime对象组合成一