zoukankan      html  css  js  c++  java
  • 支持库:DateTime扩展

        public static class DateTimeExtensions
        {
            /// <summary>
            /// 获取格式化日期,默认为 yyyy-mm-dd h:m:s
            /// yyyy:数字年份,m/mm数字月,d/dd数字日
            /// YYYY:汉字年份,如二〇一二,M/MM汉字月,D/DD汉字日
            /// </summary>
            /// <param name="dt">要处理的日期时间</param>
            /// <param name="sFormat">格式化字符串,以ymd,hms,W为主要变量</param>
            /// <returns></returns>
            public static string Format(this DateTime dt,string sFormat)
            {
                var yyyy = dt.Year.ToString(CultureInfo.InvariantCulture);
    
                var m = dt.Month;
                var mm = m.ToString().PadLeft(2, '0');
    
                var d = dt.Day;
                var dd = d.ToString().PadLeft(2, '0');
    
                var h = dt.Hour;
                var hh = h.ToString().PadLeft(2, '0');
    
                var mi = dt.Minute;
                var mmi = mi.ToString().PadLeft(2, '0');
    
                var s = dt.Second;
                var ss = s.ToString().PadLeft(2, '0');
    
    
                string w = dt.DayOfWeek.ToString();
                string wcn;
    
                //中国农历
                string nl = dt.GetChineseDate();
                w = GetWeekNum(w);
                wcn = GetWeekString(w);
                string nowStr = sFormat.Replace("yyyy", yyyy)
                    .Replace("mm", mm)
                    .Replace("dd", dd)
                    .Replace("hh", hh)
                    .Replace("mm", mmi)
                    .Replace("ss", ss)
                    .Replace("W", wcn)
                    .Replace("M", m.ToString())
                    .Replace("D", d.ToString())
                    .Replace("h", h.ToString())
                    .Replace("m", mi.ToString())
                    .Replace("s", s.ToString())
                    .Replace("NL", nl);
                return nowStr;
            }
            /// <summary>
            /// 转换为农历年
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static string GetChineseDate(this DateTime date)
            {
                var cnDate = new ChineseLunisolarCalendar();
                string[] arrMonth = { "", "正月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "冬月", "腊月" };
                string[] arrDay = { "", "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十" };
                string[] arrYear = { "", "甲子", "乙丑", "丙寅", "丁卯", "戊辰", "己巳", "庚午", "辛未", "壬申", "癸酉", "甲戌", "乙亥", "丙子", "丁丑", "戊寅", "己卯", "庚辰", "辛己", "壬午", "癸未", "甲申", "乙酉", "丙戌", "丁亥", "戊子", "己丑", "庚寅", "辛卯", "壬辰", "癸巳", "甲午", "乙未", "丙申", "丁酉", "戊戌", "己亥", "庚子", "辛丑", "壬寅", "癸丑", "甲辰", "乙巳", "丙午", "丁未", "戊申", "己酉", "庚戌", "辛亥", "壬子", "癸丑", "甲寅", "乙卯", "丙辰", "丁巳", "戊午", "己未", "庚申", "辛酉", "壬戌", "癸亥" };
    
                var lYear = cnDate.GetYear(date);
                var sYear = arrYear[cnDate.GetSexagenaryYear(date)];
                var lMonth = cnDate.GetMonth(date);
                var lDay = cnDate.GetDayOfMonth(date);
    
                //获取第几个月是闰月,等于0表示本年无闰月
                var leapMonth = cnDate.GetLeapMonth(lYear);
                var sMonth = arrMonth[lMonth];
                //如果今年有闰月   
                if (leapMonth > 0)
                {
                    //闰月数等于当前月份   
                    sMonth = lMonth == leapMonth ? string.Format("闰{0}", arrMonth[lMonth - 1]) : sMonth;
                    sMonth = lMonth > leapMonth ? arrMonth[lMonth - 1] : sMonth;
                }
                return string.Format("{0}年{1}{2}", sYear, sMonth, arrDay[lDay]);
            }
            /// <summary>
            /// 日期间隔计算,结果单位与flag相同
            /// flag:year/month/day/hour/minute/second
            /// </summary>
            /// <param name="d1"></param>
            /// <param name="d2"></param>
            /// <param name="flag"></param>
            /// <returns></returns>
            public static int DateDiff(this DateTime d1,DateTime d2,string flag)
            {
                var iR = 0;
                switch (flag.ToLower())
                {
                    case "year":
                        iR = d2.Year - d1.Year;
                        break;
                    case "month":
                        iR = (d2.Year - d1.Year) * 12 + (d2.Month - d1.Month);
                        break;
                    case "day":
                        iR = (int)(d2 - d1).TotalDays;
                        break;
                    case "hour":
                        iR = (int)(d2 - d1).TotalHours;
                        break;
                    case "minute":
                        iR = (int)(d2 - d1).TotalMinutes;
                        break;
                    case "second":
                        iR = (int)(d2 - d1).TotalSeconds;
                        break;
                }
                return iR;
            }
            /// <summary>
            /// 获取日期月的最大天数
            /// </summary>
            /// <param name="dt"></param>
            /// <returns></returns>
            public static int DaysInMonth(this DateTime dt)
            {
                return DateTime.DaysInMonth(dt.Year, dt.Month);
            }
    
            #region 私有
            private static string GetWeekString(string w)
            {
                string wcn;
                switch (w)
                {
                    case "6":
                        wcn = "星期日";
                        break;
                    case "0":
                        wcn = "星期一";
                        break;
                    case "1":
                        wcn = "星期二";
                        break;
                    case "2":
                        wcn = "星期三";
                        break;
                    case "3":
                        wcn = "星期四";
                        break;
                    case "4":
                        wcn = "星期五";
                        break;
                    case "5":
                        wcn = "星期六";
                        break;
                    default:
                        wcn = "星期无";
                        break;
                }
                return wcn;
            }
    
    
            /// <summary>
            /// 将英文周描述转为数字型
            /// </summary>
            /// <param name="weekName"></param>
            /// <returns></returns>
            public static string GetWeekNum(string weekName)
            {
                string iR = "1";
                switch (weekName)
                {
                    case "Monday":
                        iR = "0";
                        break;
                    case "Tuesday":
                        iR = "1";
                        break;
                    case "Wednesday":
                        iR = "2";
                        break;
                    case "Thursday":
                        iR = "3";
                        break;
                    case "Friday":
                        iR = "4";
                        break;
                    case "Saturday":
                        iR = "5";
                        break;
                    case "Sunday":
                        iR = "6";
                        break;
                }
                return iR;
            }
            #endregion
        }
    

      

  • 相关阅读:
    1分钟快速生成用于网页内容提取的xslt
    Python即时网络爬虫项目: 内容提取器的定义
    Python读取PDF内容
    Golang基础(二)
    shell的sed命令
    matplotlib + pandas绘图
    关于字符编码:ascii、unicode与utf-8
    shell的sort命令
    shell的uniq命令
    shell的tr命令
  • 原文地址:https://www.cnblogs.com/blackice/p/2854524.html
Copyright © 2011-2022 走看看