C#中常用日期函数方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;

namespace WindowsFormsApplication3
{
    class DateTimeHelp
    {
      /// <summary>
      /// 获取系统当前时间,返回string类型
      /// </summary>
      /// <returns></returns>
        public static string  SysDateTime()
        {
            string sysdatetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            return sysdatetime;
        }
        /// <summary>
        /// 获取系统当前时间的前一天,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysBeforeDay() {

            string sysbeforeday = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
            return sysbeforeday;
        }
        /// <summary>
        /// 获取系统当前小时减一小时即前一小时时间,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysBeforeHour()
        {

            string sysbeforehour = DateTime.Now.AddHours(-1).ToString("yyyy-MM-dd HH");
            return sysbeforehour;
        }
        /// <summary>
        /// 获取系统当前月减一月即上一月,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysBeforeMonth()
        {

            string sysbeforemonth = DateTime.Now.AddMonths(-1).ToString("yyyy-MM");
            return sysbeforemonth;
        }
        /// <summary>
        /// 获取系统当前月开始日期,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysMonthStartTime()
        {
            DateTime dt = DateTime.Now;
            DateTime dt_First = dt.AddDays(1 - (dt.Day));

            string sysmonthstarttime =dt_First.ToString("yyyy-MM-dd");
            return sysmonthstarttime;
        }

        /// <summary>
        /// 获取系统当前月结束日期,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysMonthEndTime()
        {
            DateTime dt = DateTime.Now;
            //本月第一天时间      
            DateTime dt_First = dt.AddDays(1 - (dt.Day));
            //获得某年某月的天数    
            int year = dt.Date.Year;
            int month = dt.Date.Month;
            int dayCount = DateTime.DaysInMonth(year, month);
            //本月最后一天时间    
            DateTime dt_Last = dt_First.AddDays(dayCount - 1);

            string sysmonthendtime = dt_Last.ToString("yyyy-MM-dd");
            return sysmonthendtime;
        }
        /// <summary>
        /// 获取系统当前季度开始日期,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysQuarterStartTime()
        {
            DateTime dt = DateTime.Now;
            DateTime startquarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day);  //本季度初
            DateTime endQuarter = startquarter.AddMonths(3).AddDays(-1);  //本季度末

            string sysquarterstarttime = startquarter.ToString("yyyy-MM-dd");
            return sysquarterstarttime;
        }
        /// <summary>
        /// 获取系统当前季度结束日期,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysQuarterEndTime()
        {
            DateTime dt = DateTime.Now;
            DateTime startquarter = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day);  //本季度初
            DateTime endQuarter = startquarter.AddMonths(3).AddDays(-1);  //本季度末

            string sysquarterendtime = endQuarter.ToString("yyyy-MM-dd");
            return sysquarterendtime;
        }
        /// <summary>
        /// 获取系统当前周开始日期,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysWeekStartTime()
        {
            DateTime dt = DateTime.Now;  //当前时间

            DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));  //本周周一

            string sysweekstarttime = startWeek.ToString("yyyy-MM-dd");
            return sysweekstarttime;
        }
        /// <summary>
        /// 获取系统当前周结束日期,返回string类型
        /// </summary>
        /// <returns></returns>
        public static string SysWeekEndTime()
        {
            DateTime dt = DateTime.Now;  //当前时间
            DateTime startWeek = dt.AddDays(1 - Convert.ToInt32(dt.DayOfWeek.ToString("d")));  //本周周一
            DateTime endWeek = startWeek.AddDays(6);  //本周周日

            string sysweekendtime = startWeek.ToString("yyyy-MM-dd");
            return sysweekendtime;
        }
        /// <summary>
        /// 获取当月有多少天,返回int类型
        /// </summary>
        /// <returns></returns>
        public static int SysMonthDays()
        {
            int sysmonthdays = System.DateTime.DaysInMonth(System.DateTime.Now.Year, System.DateTime.Now.Month);
            return sysmonthdays;
        }
        /// <summary>
        /// 获取某月的实际工作日(即不包括周六日)
        /// </summary>
        /// <param name="date1"></param>
        /// <returns></returns>
        public static int getDays(System.DateTime date1)
        {
            int m = System.DateTime.DaysInMonth(date1.Year, date1.Month);
            int mm = 0;
            for (int i = 1; i <= m; i++)
            {
                System.DateTime date = Convert.ToDateTime(date1.Year + "-" + date1.Month + "-" + i);
                switch (date.DayOfWeek)
                {
                    case System.DayOfWeek.Monday:
                    case System.DayOfWeek.Thursday:
                    case System.DayOfWeek.Tuesday:
                    case System.DayOfWeek.Wednesday:
                    case System.DayOfWeek.Friday:
                        mm = mm + 1;
                        break;

                }
            }
            return mm;
        }
        /// <summary>
        /// 怎么样计算两个日期相差的年、月份、日期、小时、分钟 、妙等
        /// </summary>

        public enum EnumDateCompare
        {
            year = 1,
            month = 2,
            day = 3,
            hour = 4,
            minute = 5,
            second = 6
        }
        /// <summary>
        /// 怎么样计算两个日期相差的年、月份、日期、小时、分钟 、妙等
        /// </summary>
        /// <param name="howtocompare"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public static double DateDiff(EnumDateCompare howtocompare, System.DateTime startDate, System.DateTime endDate)
        {
            double diff = 0;
            System.TimeSpan TS = new System.TimeSpan(endDate.Ticks - startDate.Ticks);

            switch (howtocompare)
            {
                case EnumDateCompare.year:
                    diff = Convert.ToDouble(TS.TotalDays / 365);
                    break;
                case EnumDateCompare.month:
                    diff = Convert.ToDouble((TS.TotalDays / 365) * 12);
                    break;
                case EnumDateCompare.day:
                    diff = Convert.ToDouble(TS.TotalDays);
                    break;
                case EnumDateCompare.hour:
                    diff = Convert.ToDouble(TS.TotalHours);
                    break;
                case EnumDateCompare.minute:
                    diff = Convert.ToDouble(TS.TotalMinutes);
                    break;
                case EnumDateCompare.second:
                    diff = Convert.ToDouble(TS.TotalSeconds);
                    break;
            }
            return diff;
        }


        /// <summary>
        /// 获得任意两日期之间的有效工作日(不包括周六日)
        /// </summary>
        /// <param name="date1"></param>
        /// <param name="date2"></param>
        /// <returns></returns>
        public static int getsubtractionDays(System.DateTime date1, System.DateTime date2)
        {
            string m = DateDiff(EnumDateCompare.day, date1, date2).ToString("f0");

            int mm = 0;
            for (int i = 0; i <= Convert.ToInt32(m); i++)
            {
                System.DateTime date = Convert.ToDateTime(date1.AddDays(i));
                switch (date.DayOfWeek)
                {
                    case System.DayOfWeek.Monday:
                    case System.DayOfWeek.Thursday:
                    case System.DayOfWeek.Tuesday:
                    case System.DayOfWeek.Wednesday:
                    case System.DayOfWeek.Friday:
                        mm = mm + 1;
                        break;
                }
            }
            return mm;
        }
        /// <summary>
        /// 获得当前日期是该年度的第几周
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public static int SysDayIsWeek(System.DateTime date)
        {

            DateTime dt = Convert.ToDateTime(date);
            int weeks = dt.DayOfYear / 7 + 1;
            return weeks;
        }
        /// <summary>
        /// 获得当前年有多少周
        /// </summary>
        /// <param name="year"></param>
        /// <returns></returns>
        public static int GetWeekOfYear(int year)
        {
            DateTime the_Date = new DateTime(year, 1, 1);//本年的第一天
            TimeSpan tt = the_Date.AddYears(1) - the_Date;//求出本年有几天
            int zs = tt.Days / 7 + 1;
            return zs; //因为年只有366天和365天除以7有余数所以始终需要加一周
        }
        /// <summary>
        ///  两个时间段日期相减得到小时、分钟、秒、毫秒
        /// </summary>
        /// <param name="date1"></param>
        /// <param name="date2"></param>
        /// <returns></returns>
        public static string getSubtractionTime(string date1,string date2)
        {

            DateTime dtone = Convert.ToDateTime(date1);
            DateTime dtwo = Convert.ToDateTime(date2);
            TimeSpan span = dtwo.Subtract(dtone); //算法是dtwo 减去 dtone
            //string subtracktiontime = span.Hours + "小时" + span.Minutes + "分钟" + span.Seconds + "秒";
           // string subtracktiontime = span.TotalMinutes.ToString();
           // string subtracktiontime = span.TotalSeconds.ToString();
            string subtracktiontime =span.TotalHours.ToString()+"小时"+ span.TotalMinutes.ToString() + "分钟" + span.TotalSeconds.ToString() +"秒"+ span.TotalMilliseconds.ToString() + "毫秒";
            return subtracktiontime;
           // tss.Text = span.Days + "天" + span.Hours + "小时" + span.Minutes + "分钟" + span.Seconds + "秒" + span.TotalDays;

        }
        /// <summary>
        /// 获得当前年每周周编号和周起止日期(以周一为周开始,周日为周结束),返回string类型
        /// </summary>
        /// <param name="year"></param>
        /// <returns></returns>
           public static string GetWeekDate(int year)          
           {
               string zqsrq = "";
              // int n = 6,w=1;             
              // DateTime s = DateTime.Parse(year.ToString() + "-1" + "-1");             
              // int x = (int)s.DayOfWeek;       //1月1日星期几              
              // s = s.AddDays(-x);              //第一周起始日(周日)               
              // DateTime e = s.AddDays(n);      //第一周终止日(周六)               
              //string zqsr="第{0}周起始日:{1:D}  终止日:{2:D}"+w+s+e+"/r/n" ;             
              // while (e<DateTime.Parse(year.ToString() + "-12" + "-31"))              
              // {                 
              //     s = e.AddDays(1);                 
              //     e = s.AddDays(n);                
              //     w++;
              //     zqsrq += "第"+w+"周 "+"周起始日期" + s+" 周终止日期" + e+"";            
              // }

               int n = 6, w = 1; 
               DateTime s = DateTime.Parse(year.ToString() + "-1" + "-1"); 
               int x = (int)s.DayOfWeek;       //1月1日星期几         
               s = s.AddDays(-x + 1);              //+1表示第一周起始日期为(周一)  不+1 表示第一周起始日期为(周日)     
               DateTime e = s.AddDays(n);      //  +1表示第一周终止日期为(周一)  不+1 表示第一周终止日为(周日)       
                
               while (e.Year < year + 1)          
               {             
                   s = e.AddDays(1);            
                   e = s.AddDays(n);             
                   w++;             
                   
                   zqsrq += "第" + w + "周 " + "周起始日期" + s + " 周终止日期" + e + "";  
               } 
               return zqsrq;

           } 

    }
}


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值