分享

C#.ASP.NET公历转换农历代码

 潘仕城 2018-06-27

C#.ASP.NET公历转换农历代码

工具/原料
浏览器
VS2010
方法/步骤
using System;
using System.Collections.Generic;
using System.Linq;using System.Text;
using System.Globalization;
namespace Common{   
/// <summary>   
/// 公历转换成农历   
/// </summary>   
public class ChineseCalendarHelper   
{       
/// <summary>       
/// 年份转换       
/// </summary>       
/// <param name="time"></param>       
/// <returns></returns>       
public static 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 static 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 static string GetDay(DateTime time)       
{           
return ChineseDayName[calendar.GetDayOfMonth(time) - 1];
       }      
/// <summary>       
/// 天干地支       
/// </summary>       
/// <param name="time"></param>       
/// <returns></returns>       
public static 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;
        }       
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[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };   
}
}
调用
前台
<html xmlns="http://www./1999/xhtml"><head runat="server">    <title></title></head><body>    <form id="form1" runat="server">    <div>        <asp:Literal ID="Literal1" runat="server"></asp:Literal>    </div>    </form></body></html>
后台
  protected void Page_Load(object sender, EventArgs e)       
{          
if (!IsPostBack)           
{                               
this.Literal1.Text =Common.ChineseCalendarHelper.GetStemBranch(DateTime.Now)+ Common.ChineseCalendarHelper.GetYear(DateTime.Now) + Common.ChineseCalendarHelper.GetMonth(DateTime.Now) + Common.ChineseCalendarHelper.GetDay(DateTime.Now);           
}       

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约