日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

ESBasic 可復(fù)用的.NET類庫(01) -- 時刻 Sho

系統(tǒng) 1877 0

(如果您能對照著源碼來閱讀本文,效果會更好。)

1. 緣起:

假設(shè)我們的員工打卡系統(tǒng),需要設(shè)定公司規(guī)定的上班時間、下班時間、以及還要對員工是否遲到早退等這些情況進(jìn)行判斷。

我們以什么方式來記錄類似上下班時間這樣只有時分秒沒有年月日的時間了?你說可以使用 DateTime ,但是合適嗎?總是覺得用 DateTime 來表示上下班的時間很別扭,因?yàn)槲覀兊纳舷掳鄷r間并需要指定到具體的哪一天啊。

我設(shè)計了 ESBasic.ShortTime 來對類似上下班時間的概念進(jìn)行抽象。 ShortTime 只有時分秒三個必需的屬性,不必再牽扯到日期。

ShortTime 的形象示意圖如下:

Hour

Minute

Second

2. 適用場合:

任何只需要使用時分秒來表示時刻的場合。

3 .設(shè)計思想與實(shí)現(xiàn)

ShortTime 的設(shè)計與實(shí)現(xiàn)都是相當(dāng)簡單的,其類圖如下:
ESBasic 可復(fù)用的.NET類庫(01) -- 時刻 ShortTime
ShortTime
Hour Minute Second 三個屬性, Hour 采用 24 小時制,取值范圍為 0~23 Minute Second 的取值范圍都是 0~59 。如果在設(shè)置這些屬性的值超過了其自身的取值范圍,屬性的 set 方法會自動將其修正到正確的值。

ShortTime 實(shí)現(xiàn)了 IComparable 泛型接口,表示 ShortTime 對象之間可以相互比較。 ShortTime 所表示的時刻的值越大,則 ShortTime 就越大,這是完全一致的。

ShortTime 是可序列化的,表示可以通過 Remoting 進(jìn)行遠(yuǎn)程傳遞。

ShortTime 提供了一個非常有用的方法 IsOnTime ,用于判斷是否到了指定的時刻。該方法接受兩個參數(shù): target maxToleranceInSecs target 即是與當(dāng)前對象進(jìn)行比較的目標(biāo), maxToleranceInSecs 表示認(rèn)為當(dāng)前對象與 target 所表示的時間是同一時刻所允許的最大誤差(單位為秒)。比如, maxToleranceInSecs 取值為 3 秒,那么 22:15:00 22:15:02 就被認(rèn)為是同一時刻, IsOnTime 方法將返回 true

4. 使用時的注意事項(xiàng)

1 ShortTime 的精度只能到秒,不能記錄毫秒、微秒等更小的精度。

2 IsOnTime 方法的 maxToleranceInSecs 參數(shù)的取值是由我們的系統(tǒng)需求所能允許的最大時刻誤差來決定了。比如,你的輪詢引擎是每隔 5 秒鐘檢測一次是否到了指定的時刻,那么在這種情況下 maxToleranceInSecs 參數(shù)就應(yīng)該設(shè)置為 5 ,而不是更大或更小。

5. 擴(kuò)展

我們可以將表示上班時間的 ShortTime 對象和表示下班時間的 ShortTime 對象組合成一個 ShortTimeScope 對象,用于表示工作時間。

ESBasic. ShortTimeScope 用來表示一個時間范圍,當(dāng)然,這個范圍的最大長度為 24 小時(更準(zhǔn)確的應(yīng)該是 23 小時 59 59 秒),也就是說, ShortTimeScope 不能表示跨天的時間段。

如果我們要判斷某一時刻是否在 ShortTimeScope 指定的時間范圍內(nèi),可以調(diào)用 ShortTimeScope Contains 方法。

ShortTimeScope 對象之間很難進(jìn)行比較大小,但是可以比較是否相等,所以 ShortTimeScope 實(shí)現(xiàn)了“ == ”操作符。

另外,在我們后面介紹的 CircleTaskSwitcher (循環(huán)任務(wù)切換器),它的實(shí)現(xiàn)也用到了本節(jié)講到的 ShortTime

注:ESBasic源碼可到 http://esbasic.codeplex.com/ 下載。

ESBasic 可復(fù)用的.NET類庫(01) -- 時刻 ShortTime


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 昌都县| 洪洞县| 涞源县| 绥化市| 天全县| 临安市| 涟水县| 江陵县| 肇东市| 顺义区| 景洪市| 四川省| 南靖县| 贵德县| 利辛县| 奇台县| 金坛市| 腾冲县| 鸡泽县| 即墨市| 小金县| 沙河市| 武穴市| 中江县| 巴林右旗| 申扎县| 天水市| 木兰县| 林口县| 临安市| 崇礼县| 花莲县| 西安市| 奇台县| 洞口县| 临安市| 聂荣县| 铁力市| 普安县| 镇赉县| 阿合奇县|