第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

計算2個時間之間經(jīng)過多少Ticks

標(biāo)簽:
C#

Ticks是一个周期,存储的是一百纳秒,换算为秒,一千万分之一秒。
我们需要计算2个时间之间,经过多少Ticks,可以使用下面的方法来实现,使用2个时间相减。

得到结果为正数,是使用较晚的时间减去较早的时间。反之为负数,即是使用较早的时间减去较晚的时间。

创建一个对象:

 

 class Ag    {        private DateTime _StartDate;        public DateTime StartDate        {            get { return _StartDate; }            set { _StartDate = value; }        }        private DateTime _EndDate;        public DateTime EndDate        {            get { return _EndDate; }            set { _EndDate = value; }        }        public Ag(DateTime startDate, DateTime endDate)        {            this._StartDate = startDate;            this._EndDate = endDate;        }        public void DurationTicks()        {                       TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine(ts.Ticks);        }    }

Source Code


在控制台应用程序运行上面写好的程序:



 
现在来了,实际情况并非都是计算2个时间之间的Ticks,而是有可能需要计算2个时间之间的秒,分钟,小时,天等。
为了实现上面的要求,我们得了解一些基础知识:
1天= 24;
1小时= 60分钟;
1分钟= 60秒;
1秒= 10000000Ticks;

因此,根据上面的计算结果(Ticks)和公式可以计算出2个时间之间的秒,分钟,小时,天等。

我们在类别中,添加下面4个方法:



 public void DurationSeconds()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine("Duraction Seconds: {0}", ts.Ticks / 10000000L);        }        public void DurationMinutes()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine("Duraction Minutes: {0}",ts.Ticks / (10000000L * 60));        }        public void DurationHours()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine("Duraction Hours: {0}", ts.Ticks / (10000000L * 60 * 60));        }        public void DurationDays()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine("Duraction Days: {0}", ts.Ticks / (10000000L * 60 * 60 * 24));        }

Source Code

 

方法写完,在控制台测试一下上面的方法:

 

 上面的计算方法有点原始,MSDN已经给出相应的方法,就可以计算出2个时间之间的秒,分钟,小时,天等。如:
TotalSeconds(),TotalMinutes(),TotalHours(),TotalDays();
为了演示与测试,Insus.NET再创建另外4个方法:



  public void TotalSeconds()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine("Duraction Seconds: {0}", ts.TotalSeconds);        }        public void TotalMinutes()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine("Duraction Minutes: {0}", ts.TotalMinutes);        }        public void TotalHours()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine("Duraction Hours: {0}", ts.TotalHours);        }        public void TotalDays()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            Console.WriteLine("Duraction Days: {0}", ts.TotalDays);        }

Source Code

 

 

再运行程序:

 


最后的现成的方法,它已经封装好单位转换与公式计算。

细心的用户有可以发现,2种结果有些不相同,没有小数和有小数。其实可以解决的,把一千万分之一秒这个基数转换为double数据类型即可。也就是说把能来的L-->D:

 public void DurationSeconds()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            // Console.WriteLine("Duraction Seconds: {0}", ts.Ticks / 10000000L);            Console.WriteLine("Duraction Seconds: {0}", ts.Ticks / 10000000D);        }        public void DurationMinutes()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            //  Console.WriteLine("Duraction Minutes: {0}", ts.Ticks / (10000000L * 60));            Console.WriteLine("Duraction Minutes: {0}", ts.Ticks / (10000000D * 60));        }        public void DurationHours()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            // Console.WriteLine("Duraction Hours: {0}", ts.Ticks / (10000000L * 60 * 60));              Console.WriteLine("Duraction Hours: {0}", ts.Ticks / (10000000D * 60 * 60));        }        public void DurationDays()        {            TimeSpan ts = (_EndDate - _StartDate).Duration();            // Console.WriteLine("Duraction Days: {0}", ts.Ticks / (10000000L * 60 * 60 * 24));               Console.WriteLine("Duraction Days: {0}", ts.Ticks / (10000000D * 60 * 60 * 24));        }

Source Code

 

这次,我们再次运行程序,看看结果是否与自带的方法计算的结果相同:


OK,就这样子,你可以使用自带现成的方法,可以自己写。

写到这里应该是结果了,但是回过头来看看自己写的代码,有一句:

TimeSpan ts = (_EndDate - _StartDate).Duration();


每一个方法里均有,代码冗余了,我们可以简化它,写一个方法或是属性:


public TimeSpan Ts        {            get            {                return (_EndDate - _StartDate).Duration();            }        }        public long Ticks        {            get            {                return Ts.Ticks;            }        }

Source Code

 

经过一次重构,8个方法里,只需要一句代码就行了:

 

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消