ASP.NET农历时间显示(两)
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET农历时间显示(两)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在拍攝的月球時前(http://blog.csdn.net/yysyangyangyangshan/article/details/6802950),只是沒有進行封裝使用起來須要手動改動。
本次進行簡單封裝一下。能夠直接進行調用。
代碼例如以下:
取農歷時間的類
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[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };/// <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]; } }
須要的using
?
調用:
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" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"><title></title> </head> <body><form id="form1" runat="server"><div><table><tr><td><asp:Label ID="Label1" runat="server" Text="農歷時間"/></td><td><asp:Label ID="lblCountryDate" runat="server"/></td></tr><tr><td><asp:Label ID="Label2" runat="server" Text="公歷時間"/></td><td><asp:Label ID="lblForignDate" runat="server"/></td></tr></table><asp:Button ID="buttton1" runat="server" Text="顯示時間" OnClick="Button1_Click" /></div></form> </body> </html>
后臺代碼:
效果例如以下:
假設有更好的優化,歡迎大家分享。
版權聲明:本文博主原創文章,博客,未經同意不得轉載。
總結
以上是生活随笔為你收集整理的ASP.NET农历时间显示(两)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web设计——NBA队标
- 下一篇: 移动端自适应方案(转载)