• ASP.NET中显示农历时间


    using System.Globalization;
       
            public string ChineseTimeNow = "";
            public string ForignTimeNow = "";
            private static ChineseLunisolarCalendar calendar = new ChineseLunisolarCalendar();
            private static string ChineseNumber = "〇一二三四五六七八九";
            public const string CelestialStem = "甲乙丙丁戊己庚辛壬癸";
            public const string TerrestrialBranch = "子丑寅卯辰巳午未申酉戌亥";
            public static readonly string[] ChineseDayName = new string[] {
                "初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",
                "十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
                "廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"};
            public static readonly string[] ChineseMonthName = new string[] { """""""""""""""""""""十一""十二" };

            override protected void Page_Load(object sender, EventArgs e)
            {
                ChineseTimeNow=GetChineseDate(DateTime.Now);
                ForignTimeNow = DateTime.Now.GetDateTimeFormats('D')[0].ToString();
            }

            /// <summary>
            
    /// 获取一个公历日期对应的完整的农历日期
            
    /// </summary>
            
    /// <param name="time">一个公历日期</param>
            
    /// <returns>农历日期</returns>
            public string GetChineseDate(DateTime time)
            {
                string strY = GetYear(time);
                string strM = GetMonth(time);
                string strD = GetDay(time);
                string strSB = GetStemBranch(time);
                string strDate = strY + "(" + strSB + ")年 " + strM + "月 " + strD;
                return strDate;
            }
            /// <summary>
            
    /// 获取一个公历日期的农历干支纪年
            
    /// </summary>
            
    /// <param name="time">一个公历日期</param>
            
    /// <returns>农历干支纪年</returns>
            public string GetStemBranch(DateTime time)
            {
                int sexagenaryYear = calendar.GetSexagenaryYear(time);
                string stemBranch = CelestialStem.Substring(sexagenaryYear % 10 - 11) + TerrestrialBranch.Substring(sexagenaryYear % 12 - 11);
                return stemBranch;
            }

            /// <summary>
            
    /// 获取一个公历日期的农历年份
            
    /// </summary>
            
    /// <param name="time">一个公历日期</param>
            
    /// <returns>农历年份</returns>
            public string GetYear(DateTime time)
            {
                StringBuilder sb = new StringBuilder();
                int year = calendar.GetYear(time);
                int d;
                do
                {
                    d = year % 10;
                    sb.Insert(0, ChineseNumber[d]);
                    year = year / 10;
                } while (year > 0);
                return sb.ToString();
            }

            /// <summary>
            
    /// 获取一个公历日期的农历月份
            
    /// </summary>
            
    /// <param name="time">一个公历日期</param>
            
    /// <returns>农历月份</returns>
            public string GetMonth(DateTime time)
            {
                int month = calendar.GetMonth(time);
                int year = calendar.GetYear(time);
                int leap = 0;

                //正月不可能闰月
                for (int i = 3; i <= month; i++)
                {
                    if (calendar.IsLeapMonth(year, i))
                    {
                        leap = i;
                        break//一年中最多有一个闰月
                    }

                }
                if (leap > 0) month--;
                return (leap == month + 1 ? "" : "") + ChineseMonthName[month - 1];
            }


            /// <summary>
            
    /// 获取一个公历日期的农历日
            
    /// </summary>
            
    /// <param name="time">一个公历日期</param>
            
    /// <returns>农历日</returns>
            public string GetDay(DateTime time)
            {
                return ChineseDayName[calendar.GetDayOfMonth(time) - 1];
            }

    使用

    <%=ForignTimeNow%>
    <%=ChineseTimeNow %>
  • 相关阅读:
    设计模式笔记(3)抽象工厂模式(创建型)
    程序员怎样学习英语
    设计模式笔记(2)单件模式(创建型)
    VS中的经典字体推荐
    Windows Live Writer中的语法高亮插件
    多线程学习笔记第三篇
    Entity Framework快速入门学习笔记第1篇—ORM
    ASP.NET运行原理
    ASP.NET MVC异步上传图片和富文本编辑器的使用详解
    关于一个项目的简单开发流程(需求,数据库,编码)
  • 原文地址:https://www.cnblogs.com/feifei/p/2751503.html
Copyright © 2020-2023  润新知