当前位置: 首页 > news >正文

ASP.NET显示农历时间

CS:

       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[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };

        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 - 1, 1) + TerrestrialBranch.Substring(sexagenaryYear % 12 - 1, 1);
            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];
        }

前台:

 <table style="">
 <tr valign="bottom">
<td valign="bottom"> <%=ForignTimeNow%><br /></td>>
   </tr>
   <tr valign="bottom">
  <td valign="bottom"> <%=ChineseTimeNow %></td>
 </tr>
 </table>

 

转载于:https://www.cnblogs.com/zbqbibi/archive/2011/09/23/2186161.html

相关文章:

  • 多映射通用集合类(C#实现)--支持一键多值存储
  • 在 MonoTouch 中使用 Newtonsoft.Json
  • ubuntu札记之一个没有技术含量的虚拟终端的问题
  • ruby文件操作大全
  • MySQL管理员指南之--MySQL用户管理
  • Object-c 一些代码规范
  • t-sql导出EXCEL语句--待测试
  • 冷月枫林
  • PHP 计算程序运行的时间
  • 文本框自动撑高JQ插件
  • 11.23 IBeamMDAAMembershipProvider 是什么?如何使用?
  • C# WinForm开发系列 - File
  • XML中Xpath语法的使用
  • 9、如何控制框架页面或iframe内嵌页面在指定页面(区域)打开页面? [除了div+css,框架页面也不能忘记]...
  • POJ3590 The shuffle Problem——置换群+DP/递推预处理
  • hexo+github搭建个人博客
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • co.js - 让异步代码同步化
  • crontab执行失败的多种原因
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PAT A1050
  • Python学习笔记 字符串拼接
  • redis学习笔记(三):列表、集合、有序集合
  • springboot_database项目介绍
  • Transformer-XL: Unleashing the Potential of Attention Models
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 工作中总结前端开发流程--vue项目
  • 容器服务kubernetes弹性伸缩高级用法
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (实战篇)如何缓存数据
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)Linux+Windows下安装ffmpeg
  • (已解决)什么是vue导航守卫
  • (转)可以带来幸福的一本书
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .net 流——流的类型体系简单介绍
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net6使用Sejil可视化日志
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @Documented注解的作用
  • @media screen 针对不同移动设备
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [C和指针].(美)Kenneth.A.Reek(ED2000.COM)pdf
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页
  • [kubernetes]控制平面ETCD