.Net的计算时间差的方法

        /// <summary>
        /// 得到剩余时间
        /// </summary>
        public string Getdatatime(DateTime gettime) {
            TimeSpan ts1 = new TimeSpan(gettime.Ticks);
            TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
            TimeSpan ts = ts2.Subtract(ts1).Duration();

            Convert.ToInt32(gettime.ToString("yyyy-MM-dd"));
            if (Convert.ToInt32(ts.Days.ToString())> 0)
            {
                return "剩" + ts.Days.ToString() + "天";
            }
            else {
                return "过期用户";
            }
        }

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值表示的秒数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算时间差并排除周末及非工作时间,可以使用以下步骤: 1. 使用TimeSpan类计算两个日期之间的时间差。 2. 排除周末的时间,可以使用Weekday属性,Weekday返回0表示星期日,1表示星期一,以此类推。如果时间差的天数是7的倍数,则排除的时间应该为2倍的周末时间。 3. 排除非工作时间的时间,可以定义一个非工作时间段的时间区间,然后将时间差中与非工作时间段重叠的部分排除。 4. 排除节假日的时间,可以使用自定义函数或第三方库,将日期表与节假日表JOIN,然后排除在节假日表中出现的日期。 下面是一个示例代码,假设要计算2021年1月1日到2021年1月31日之间的工作时间: ``` DateTime start = new DateTime(2021, 1, 1, 9, 0, 0); // 开始时间 DateTime end = new DateTime(2021, 1, 31, 18, 0, 0); // 结束时间 TimeSpan span = end - start; // 计算时间差 int totalDays = (int)Math.Ceiling(span.TotalDays); // 计算总天数 int weekendDays = 0; // 周末天数 for (int i = 0; i < totalDays; i++) { DateTime date = start.AddDays(i); if (date.DayOfWeek == DayOfWeek.Saturday || date.DayOfWeek == DayOfWeek.Sunday) { weekendDays++; } } if (totalDays % 7 == 0) { weekendDays *= 2; } TimeSpan offHours = new TimeSpan(9, 0, 0) - new TimeSpan(18, 0, 0); // 定义非工作时间段 TimeSpan offTime = new TimeSpan(0); // 非工作时间 for (int i = 0; i < totalDays; i++) { DateTime date = start.AddDays(i); TimeSpan startTime = date.Date + new TimeSpan(9, 0, 0); TimeSpan endTime = date.Date + new TimeSpan(18, 0, 0); if (span.Overlap(startTime, endTime)) { offTime += span.Intersect(startTime, endTime); } } TimeSpan holidayTime = new TimeSpan(0); // 节假日时间 foreach (DateTime date in holidayList) { // holidayList是节假日列表 if (date >= start && date <= end) { holidayTime += new TimeSpan(1, 0, 0, 0); } } TimeSpan workTime = span - new TimeSpan(weekendDays, 0, 0, 0) - offTime - holidayTime; // 计算工作时间 ``` 其中,holidayList是一个包含所有节假日日期的列表。代码中使用了Overlap和Intersect方法来判断时间段是否重叠,使用了Ceiling方法来向上取整天数。最终的workTime变量即为实际的工作时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值