zoukankan      html  css  js  c++  java
  • 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 %>
  • 相关阅读:
    记录一些经常被忽略的结论
    Eclipse 各种问题解决记录
    Feign 动态URL 解决记录
    Nacos 启动失败
    多git账号配置解决方案
    记一次java.lang.StackOverflowError
    StringBuilder 以及 StringBuffer默认大小与扩容
    MySQL索引背后的数据结构及原理
    我没有高并发项目经验,但是面试的时候经常被问到高并发、性能调优方面的问题,有什么办法可以解决吗?
    istio 学习之 手动注入sidecar
  • 原文地址:https://www.cnblogs.com/feifei/p/2751503.html
Copyright © 2011-2022 走看看