博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET农历时间显示(两)
阅读量:6702 次
发布时间:2019-06-25

本文共 4309 字,大约阅读时间需要 14 分钟。

在拍摄的月球时前(),只是没有进行封装使用起来须要手动改动。

本次进行简单封装一下。能够直接进行调用。

代码例如以下:

取农历时间的类

public class CountryDate    {        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[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };        ///         /// 获取一个公历日期相应的完整的农历日期        ///         /// 一个公历日期        /// 
农历日期
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; } /// /// 获取一个公历日期的农历干支纪年 /// /// 一个公历日期 ///
农历干支纪年
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; } /// /// 获取一个公历日期的农历年份 /// /// 一个公历日期 ///
农历年份
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(); } /// /// 获取一个公历日期的农历月份 /// /// 一个公历日期 ///
农历月份
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]; } }

须要的using

using System;using System.Collections.Generic;using System.Web;using System.Text;using System.Globalization;

 

调用:

CountryDate cd = new CountryDate();            string ChineseTimeNow = cd.GetChineseDate(DateTime.Now);//农历日期            string ForignTimeNow = DateTime.Now.GetDateTimeFormats('D')[0].ToString();//公历日期

以下有一个測试的效果:

前台代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestCountryDate._Default" %>        

后台代码:

public partial class _Default : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {        }        protected void Button1_Click(object sender, EventArgs e)        {            CountryDate cd = new CountryDate();            string ChineseTimeNow = cd.GetChineseDate(DateTime.Now);//农历日期            string ForignTimeNow = DateTime.Now.GetDateTimeFormats('D')[0].ToString();//公历日期            lblCountryDate.Text = ChineseTimeNow;            lblForignDate.Text = ForignTimeNow;        }    }

效果例如以下:

主要取时间就正是这种CountryDate分类,我们可以花时间打电话。

假设有更好的优化,欢迎大家分享。

版权声明:本文博主原创文章,博客,未经同意不得转载。

你可能感兴趣的文章
Quartz 2D编程笔记
查看>>
【Arduino】使用C#实现Arduino与电脑进行串行通讯
查看>>
bzoj2561 最小生成树
查看>>
java MD5加密
查看>>
mysql多实例
查看>>
购物商城Web开发第二十三天
查看>>
我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计
查看>>
Selenium UI 举例 getCssValue
查看>>
Kickstart Practice Round 2017---A
查看>>
Q-Dir
查看>>
Algs4-1.4.18数组的局部最小元素
查看>>
Algs4-1.4.38 3-sum的初级算法与ThreeSum性能比较
查看>>
谁获得了最高奖学金
查看>>
CODING 受邀参加《腾讯全球数字生态大会》
查看>>
python3基础3--数据类型--数据运算--表达式if -else-while-for
查看>>
如何学习前端 转载
查看>>
性能测试的重要意义(一)
查看>>
简单的文件上传功能实现(java)
查看>>
MySQL的简单使用
查看>>
浮动问题
查看>>