前言
昨天接到经理的BUG通知,说是计费这个地方有些BUG,让我来做个修改,看了一下午的代码,终于找到错误的原因了,现在做个简单的笔记吧,方便以后看。
原始错误
int totalhours = (DateTime.Parse(EndTime.ToString("yyyy-MM-dd HH:mm:ss")) - DateTime.Parse(StartTime.ToString("yyyy-MM-dd HH:mm:ss"))).Hours;
这个错误的结果是6个小时,而我真实相差的是54个小时。根据这个错误,我找了一些资料,并写了一个案例,避免各位同僚,犯这个错误。
知识点
1.DateTime值类型代表了一个从公元0001年1月1日0点0分0秒到公元9999年12月31日23点59分59秒之间的具体日期时刻。
因此,你可以用DateTime值类型来描述任何在想象范围之内的时间。一个DateTime值代表了一个具体的时刻.
2.TimeSpan值包含了许多属性与方法,用于访问或处理一个TimeSpan值,下面的列表涵盖了其中的一部分: Add:与另一个TimeSpan值相加。
Days:返回用天数计算的TimeSpan值。
Duration:获取TimeSpan的绝对值。
Hours:返回用小时计算的TimeSpan值。
Milliseconds:返回用毫秒计算的TimeSpan值。
Minutes:返回用分钟计算的TimeSpan值。
Negate:返回当前实例的相反数。
Seconds:返回用秒计算的TimeSpan值。
Subtract:从中减去另一个TimeSpan值。
Ticks:返回TimeSpan值的tick数。
TotalDays:返回TimeSpan值表示的天数。
TotalHours:返回TimeSpan值表示的小时数。
TotalMilliseconds:返回TimeSpan值表示的毫秒数。
TotalMinutes:返回TimeSpan值表示的分钟数。
TotalSeconds:返回TimeSpan值表示的秒数。
案例代码
// 第一个存入时间DateTime StartTime = DateTime.Now.AddHours(-54.2);// 第二个取出时间DateTime EndTime = DateTime.Now;// 计算之间的时间TimeSpan TotalTime = EndTime - StartTime;// 两个时间之间的天数string days = TotalTime.Days.ToString();// 两个时间之间的小时string hours = TotalTime.Hours.ToString();// 两个时间之间的分钟string minutes = TotalTime.Minutes.ToString();Console.WriteLine("之前时间:" + StartTime + Environment.NewLine + "当前时间:" + EndTime + Environment.NewLine + "相差时间:");Console.WriteLine("天:" + days + Environment.NewLine + "小时:" + hours + Environment.NewLine + "分钟" + hours);// 总计多少天string TotalDays = TotalTime.TotalDays.ToString();// 总计多少小时string TotalHours = TotalTime.TotalHours.ToString();// 总计多少分钟string TotalMinute = TotalTime.TotalMinutes.ToString();// 总计多少秒string TotalMilliseconds = TotalTime.TotalMilliseconds.ToString();Console.WriteLine("两个时间相差 " + TotalDays + "天");Console.WriteLine("两个时间相差 " + TotalHours + "小时");Console.WriteLine("两个时间相差 " + TotalMinute + "分钟");Console.WriteLine("两个时间相差 " + TotalMilliseconds + "秒");
代码下载
高速下载
本文地址:https://www.xsyrz.cn/course/C-Computing-Time.html
版权声明:本文为原创文章,版权归 QingShanNET 所有,欢迎分享本文,转载请保留出处!