真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

C#計算時間間隔和時間所屬區(qū)間的通用操作方法-創(chuàng)新互聯(lián)

在.net項目中,對DateTime的相關操作使用的比較多,例如時間格式的轉換,時間間隔的計算,時間所屬的區(qū)間計算等,在這些要求中,雖然使用起來較為的簡單,但是在轉換的過程中,較為容易出錯,花費的時間也較多,現(xiàn)在總結一些常用的時間操作方法,以便在項目開發(fā)中節(jié)省時間。

創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為五華等服務建站,五華等地企業(yè),進行企業(yè)商務咨詢服務。為五華企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

 一下代碼中需要使用到如下的實體類:

        /// 
        /// 周(星期)信息實體類
        /// 
        [Serializable]
        public class WeekInfo
        {
            /// 
            /// 周(星期)信息實體類
            /// 
            public WeekInfo()
            {
                Number = 0;
                BeginDate = DateTime.MinValue;
                EndDate = DateTime.MaxValue;
            }
            /// 
            /// 周數(shù)
            /// 
            public int Number { get; set; }
            /// 
            /// 開始時間
            /// 
            public DateTime BeginDate { get; set; }
            /// 
            /// 結束時間
            /// 
            public DateTime EndDate { get; set; }
            /// 
            /// 輸出第幾周和日期間隔
            /// 默認格式:
            /// 第幾周,從2012年12月21日至2112年12月21日。
            /// 
            /// 第幾周和日期間隔
            public override string ToString()
            {
                return string.Format("第{0}周,從{1}至{2}。", Number, BeginDate.ToString("yyyy年MM月dd日"), EndDate.ToString("yyyy年MM月dd日"));
            }


            /// 
            /// 輸出第幾周
            /// 
            /// 少于2位時是否補零
            /// 第幾周
            public string GetWeekString(bool isFill)
            {
                string format = "第{0}周";
                if (isFill && Number < 10) format = "第0{0}周";
                return string.Format(format, Number);
            }


            /// 
            /// 輸出日期間隔
            /// 
            /// 輸出格式化字符串
            /// 日期格式化字符串
            /// 日期間隔
            public string GetDateString(string inputString, string dateString)
            {
                if (string.IsNullOrWhiteSpace(inputString) || string.IsNullOrWhiteSpace(dateString)) return null;
                try
                {
                    return string.Format(inputString, BeginDate.ToString(dateString), EndDate.ToString(dateString));
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
        }

 1.獲得年度第一個周一的日期:

        /// 
        /// 獲得年度第一個周一的日期
        /// 
        /// 需要計算的年份
        /// 年度第一周是否跳過跨年的周數(shù)
        /// 年度第一個周一偏移量
        /// 年度第一個周一的日期
        public static DateTime WeekOfFirstDay(int year, bool jumpYear, out int offset)
        {
            var firstDate = YearOfFirstDay(year); //該年的第一天
            var firstWeek = (int)firstDate.DayOfWeek; //該年的第一天是周幾
            offset = 0; //周一偏移量
            switch (firstWeek)
            {
                case 1: //星期一
                    offset = 0;
                    break;
                case 2: //星期二
                    offset = jumpYear ? 6 : -1;
                    break;
                case 3: //星期三
                    offset = jumpYear ? 5 : -2;
                    break;
                case 4: //星期四
                    offset = jumpYear ? 4 : -3;
                    break;
                case 5: //星期五
                    offset = jumpYear ? 3 : -4;
                    break;
                case 6: //星期六
                    offset = jumpYear ? 2 : -5;
                    break;
                case 0: //星期日
                    offset = jumpYear ? 1 : -6;
                    break;
            }
            firstDate = firstDate.AddDays(offset);
            return firstDate;
        }

2.獲得年度周(星期)信息實體集合列表:

        /// 
        /// 獲得年度周(星期)信息實體集合列表
        /// 
        /// 需要計算的年份
        /// 年度第一周是否跳過跨年的周數(shù)
        /// 周(星期)信息實體集合列表對象
        public static IList WeekOfList(int year, bool jumpYear)
        {
            IList weekList = new List();
            if (year <= 0001 || year >= 9999) return weekList;
            var offset = 0;
            var firstDate = WeekOfFirstDay(year, jumpYear, out offset); //年度周一的日期
            var index = 1;
            while (true)
            {
                if (index > 54) break;
                var weekInfo = new WeekInfo
                {
                    Number = index,
                    BeginDate = firstDate,
                    EndDate = firstDate.AddDays(6)
                };
                weekList.Add(weekInfo);
                firstDate = firstDate.AddDays(7); //下周
                if (jumpYear)
                {
                    if (firstDate.Year != year) break;
                }
                else
                {
                    if (firstDate.AddDays(6).Year != year) break;
                }
                index++;
            }
            return weekList;
        }

3.獲得某年第某周的開始日期和結束日期:

        /// 
        /// 獲得某年第某周的開始日期和結束日期
        /// 
        /// 需要計算的年份
        /// 需要計算的周數(shù)
        /// 年度第一周是否跳過跨年的周數(shù)
        /// 開始日期
        /// 結束日期
        public static void WeekOfDate(int year, int weekNumber, bool jumpYear, out DateTime weekBeginDate, out DateTime weekEndDate)
        {
            weekBeginDate = DateTime.MinValue;
            weekEndDate = DateTime.MaxValue;
            if (year <= 0001 || year >= 9999 || weekNumber < 1 || weekNumber > 54) return;
            int offset;
            var firstDate = WeekOfFirstDay(year, jumpYear, out offset); //年度周一的日期
            firstDate = firstDate.AddDays((weekNumber - 1) * 7);
            weekBeginDate = firstDate;
            weekEndDate = firstDate.AddDays(6);
        }

4.獲得某個日期屬于某年的第幾周:

        /// 
        /// 獲得某個日期屬于某年的第幾周
        /// 
        /// 需要計算的日期
        /// 年度第一周是否跳過跨年的周數(shù)
        /// 某年的第幾周
        public static int WeekOfCurrent(DateTime currentDate, bool jumpYear)
        {
            if (DateTime.MinValue == currentDate || DateTime.MaxValue == currentDate) return 0;
            int result, offset;
            var firstDate = WeekOfFirstDay(currentDate.Year, jumpYear, out offset); //年度周一的日期
            var firstWeek = (int)firstDate.DayOfWeek; //該年的第一天是周幾
            var currentDay = currentDate.DayOfYear;
            if (offset > 0)
            {
                currentDay += offset;
            }
            else
            {
                currentDay -= offset;
            }
            var remainderDay = currentDay - (7 - firstWeek);
            if (remainderDay < 1)
            {
                result = 1;
            }
            else
            {
                result = remainderDay / 7;
                if (remainderDay % 7 != 0) result++;
                result++;
            }
            return result;
        }

5.統(tǒng)計一段時間內有多少個星期幾:

        /// 
        /// 統(tǒng)計一段時間內有多少個星期幾
        /// 
        /// 開始日期
        /// 結束日期
        /// 星期幾
        /// 多少個星期幾
        public static int WeekOfTotalWeeks(DateTime beginDate, DateTime endDate, DayOfWeek weekNumber)
        {
            var dayTotal = new TimeSpan(endDate.Ticks - beginDate.Ticks);
            var result = (int)dayTotal.TotalDays / 7;
            var iLen = dayTotal.TotalDays % 7;
            for (var i = 0; i <= iLen; i++)
            {
                if (beginDate.AddDays(i).DayOfWeek != weekNumber) continue;
                result++;
                break;
            }
            return result;
        }

6.計算當前月屬于第幾季度:

        /// 
        /// 計算當前月屬于第幾季度
        /// 
        /// 當前年第幾季度
        public static int QuarterOfCurrent()
        {
            return QuarterOfCurrent(DateTime.Now.Month);
        }


        /// 
        /// 計算某個月屬于第幾季度
        /// 
        /// 需要計算的月份
        /// 某年第幾季度
        public static int QuarterOfCurrent(int month)
        {
            if (month < 1 || month > 12) return -1;
            return (month - 1) / 3 + 1;
        }

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


文章名稱:C#計算時間間隔和時間所屬區(qū)間的通用操作方法-創(chuàng)新互聯(lián)
文章來源:http://weahome.cn/article/hiegh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部