C# 时间计算

23 篇文章 0 订阅

1、获取时间范围经过的周数

        public static int GetWeekCount(DateTime startTime, DateTime endTime)
        {
            //开始时间是星期几
            int startWeek = Convert.ToInt32(startTime.DayOfWeek);
            startWeek = (startWeek == 0 ? (7 - 1) : (startWeek - 1));
            int daydiff = (-1) * startWeek;
            string firstDay = startTime.AddDays(daydiff).ToString("yyyy-MM-dd");
            //获取开始时间那周的周一
            DateTime startMonday = Convert.ToDateTime(firstDay);
            //结束时间是星期几
            int lastWeek = Convert.ToInt32(endTime.DayOfWeek);
            int daydiff1 = 0;
            if (lastWeek != 0)
            {
                daydiff1 = 7 - lastWeek;
            }
            //获取结束时间那周的周日
            DateTime lastSunday = endTime.AddDays(daydiff1);
            TimeSpan timeSpan = (lastSunday - startMonday);
            //返回总周数
            return Convert.ToInt32(timeSpan.Days + 1) / 7;
        }

2、获取时间范围经过的月数

        public static int GetMonthCount(DateTime startTime, DateTime endTime)
        {                                 
            //相差几年
            int year = endTime.Year - startTime.Year;
            int month = endTime.Month - startTime.Month + 1;
            int total = year * 12 + month;
            return total;
        }

3、获取时间该年为第几周

        public static int GetWeekOfYear(DateTime date)
        {
            System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar();
            int week = gc.GetWeekOfYear(date, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Monday);
            return week;
        }

4、获取时间该周的周一

        public static DateTime GetMondayOfWeek(DateTime date)
        {
            int startWeek = Convert.ToInt32(date.DayOfWeek);
            startWeek = (startWeek == 0 ? (7 - 1) : (startWeek - 1));
            int daydiff = (-1) * startWeek;
            DateTime monday = date.AddDays(daydiff);
            return monday;
        }

5、当月第一天和最后一天

            //当月第一天
            DateTime firstDay = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date;
            //当月最后一天
            DateTime lastDay = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date.AddMonths(1).AddDays(-1);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值