黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

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

系統(tǒng) 2085 0

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

1. 緣起:

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

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

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

ShortTime 的形象示意圖如下:

Hour

Minute

Second

2. 適用場合:

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

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

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

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

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

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

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

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

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

5. 擴(kuò)展

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

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

如果我們要判斷某一時(shí)刻是否在 ShortTimeScope 指定的時(shí)間范圍內(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) -- 時(shí)刻 ShortTime


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論