DBMNG数据库管理与应用

书籍是全世界的营养品。生活里没有书籍,就好像没有阳光;智慧里没有书籍,就好像鸟儿没有翅膀。
当前位置:首页 > 经验分享 > WEB

ASP.NET显示农历时间

前面有一篇取农历时间的(http://blog.csdn.net/yysyangyangyangshan/article/details/6802950),不过没有进行封装使用起来需要手动修改。本次进行简单封装一下,可以直接进行调用。

代码如下:

取农历时间的类

  1. public class CountryDate  
  2.  {  
  3.      public string ChineseTimeNow = "";  
  4.      public string ForignTimeNow = "";  
  5.      private static ChineseLunisolarCalendar calendar = new ChineseLunisolarCalendar();  
  6.      private static string ChineseNumber = "〇一二三四五六七八九";  
  7.      public const string CelestialStem = "甲乙丙丁戊己庚辛壬癸";  
  8.      public const string TerrestrialBranch = "子丑寅卯辰巳午未申酉戌亥";  
  9.      public static readonly string[] ChineseDayName = new string[] {  
  10.          "初一","初二","初三","初四","初五","初六","初七","初八","初九","初十",  
  11.          "十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",  
  12.          "廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"};  
  13.      public static readonly string[] ChineseMonthName = new string[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };  
  14.   
  15.      /// <summary>  
  16.      /// 获取一个公历日期对应的完整的农历日期  
  17.      /// </summary>  
  18.      /// <param name="time">一个公历日期</param>  
  19.      /// <returns>农历日期</returns>  
  20.      public string GetChineseDate(DateTime time)  
  21.      {  
  22.          string strY = GetYear(time);  
  23.          string strM = GetMonth(time);  
  24.          string strD = GetDay(time);  
  25.          string strSB = GetStemBranch(time);  
  26.          string strDate = strY + "(" + strSB + ")年 " + strM + "月 " + strD;  
  27.          return strDate;  
  28.      }  
  29.      /// <summary>  
  30.      /// 获取一个公历日期的农历干支纪年  
  31.      /// </summary>  
  32.      /// <param name="time">一个公历日期</param>  
  33.      /// <returns>农历干支纪年</returns>  
  34.      public string GetStemBranch(DateTime time)  
  35.      {  
  36.          int sexagenaryYear = calendar.GetSexagenaryYear(time);  
  37.          string stemBranch = CelestialStem.Substring(sexagenaryYear % 10 - 1, 1) + TerrestrialBranch.Substring(sexagenaryYear % 12 - 1, 1);  
  38.          return stemBranch;  
  39.      }  
  40.   
  41.      /// <summary>  
  42.      /// 获取一个公历日期的农历年份  
  43.      /// </summary>  
  44.      /// <param name="time">一个公历日期</param>  
  45.      /// <returns>农历年份</returns>  
  46.      public string GetYear(DateTime time)  
  47.      {  
  48.          StringBuilder sb = new StringBuilder();  
  49.          int year = calendar.GetYear(time);  
  50.          int d;  
  51.          do  
  52.          {  
  53.              d = year % 10;  
  54.              sb.Insert(0, ChineseNumber[d]);  
  55.              year = year / 10;  
  56.          } while (year > 0);  
  57.          return sb.ToString();  
  58.      }  
  59.   
  60.      /// <summary>  
  61.      /// 获取一个公历日期的农历月份  
  62.      /// </summary>  
  63.      /// <param name="time">一个公历日期</param>  
  64.      /// <returns>农历月份</returns>  
  65.      public string GetMonth(DateTime time)  
  66.      {  
  67.          int month = calendar.GetMonth(time);  
  68.          int year = calendar.GetYear(time);  
  69.          int leap = 0;  
  70.   
  71.          //正月不可能闰月  
  72.          for (int i = 3; i <= month; i++)  
  73.          {  
  74.              if (calendar.IsLeapMonth(year, i))  
  75.              {  
  76.                  leap = i;  
  77.                  break; //一年中最多有一个闰月  
  78.              }  
  79.   
  80.          }  
  81.          if (leap > 0) month--;  
  82.          return (leap == month + 1 ? "闰" : "") + ChineseMonthName[month - 1];  
  83.      }  
  84.   
  85.      /// <summary>  
  86.      /// 获取一个公历日期的农历日  
  87.      /// </summary>  
  88.      /// <param name="time">一个公历日期</param>  
  89.      /// <returns>农历日</returns>  
  90.      public string GetDay(DateTime time)  
  91.      {  
  92.          return ChineseDayName[calendar.GetDayOfMonth(time) - 1];  
  93.      }  
  94.  }  


需要的using

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Web;  
  4. using System.Text;  
  5. using System.Globalization;  

 

调用:

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


下面有一个测试的效果:

前台代码:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestCountryDate._Default" %>  
  2.   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4.   
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head runat="server">  
  7.     <title></title>  
  8. </head>  
  9. <body>  
  10.     <form id="form1" runat="server">  
  11.     <div>  
  12.     <table>  
  13.      <tr>  
  14.       <td><asp:Label ID="Label1" runat="server" Text="农历时间"/></td>  
  15.       <td><asp:Label ID="lblCountryDate" runat="server"/></td>  
  16.      </tr>  
  17.      <tr>  
  18.       <td><asp:Label ID="Label2" runat="server" Text="公历时间"/></td>  
  19.       <td><asp:Label ID="lblForignDate" runat="server"/></td>  
  20.      </tr>  
  21.     </table>  
  22.     <asp:Button ID="buttton1" runat="server" Text="显示时间" OnClick="Button1_Click" />  
  23.     </div>  
  24.     </form>  
  25. </body>  
  26. </html>  


后台代码:

  1. public partial class _Default : System.Web.UI.Page  
  2. {  
  3.     protected void Page_Load(object sender, EventArgs e)  
  4.     {  
  5.   
  6.     }  
  7.   
  8.     protected void Button1_Click(object sender, EventArgs e)  
  9.     {  
  10.         CountryDate cd = new CountryDate();  
  11.         string ChineseTimeNow = cd.GetChineseDate(DateTime.Now);//农历日期  
  12.         string ForignTimeNow = DateTime.Now.GetDateTimeFormats('D')[0].ToString();//公历日期  
  13.   
  14.         lblCountryDate.Text = ChineseTimeNow;  
  15.         lblForignDate.Text = ForignTimeNow;  
  16.     }  
  17. }  


效果如下:

主要取时间就是这个CountryDate类,调用取时间即可。如果有更好的优化欢迎大家交流。
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号