如何在ASP.net中的日历控件中加入农历

如何在ASP.net中的日历控件中加入农历,第1张

using System

using System.Data

using System.Configuration

using System.Web

using System.Web.Security

using System.Web.UI

using System.Web.UI.WebControls

using System.Web.UI.WebControls.WebParts

using System.Web.UI.HtmlControls

/// <summary>

/// Tool 的摘要说明

/// </summary>

public class Tool

{

public Tool()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

//天干

private static string[] TianGan = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" }

//地支

private static string[] DiZhi = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" }

//十二生肖

private static string[] ShengXiao = { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" }

//农历日期

private static string[] DayName = {"*","初一","初二","初三","初四","初五",

"初六","初七","初八","初九","初十",

"十一","十二","十三","十四","十五",

"十六","十七","十八","十九","二十",

"廿一","廿二","廿三","廿四","廿五",

"廿六","廿七","廿八","廿九","三十"}

//农历月份

private static string[] MonthName = { "*", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "腊" }

//公历月计数天

private static int[] MonthAdd = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 }

//农历数据

private static int[] LunarData = {2635,333387,1701,1748,267701,694,2391,133423,1175,396438

,3402,3749,331177,1453,694,201326,2350,465197,3221,3402

,400202,2901,1386,267611,605,2349,137515,2709,464533,1738

,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762

,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413

,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395

,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031

,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222

,268949,3402,3493,133973,1386,464219,605,2349,334123,2709

,2890,267946,2773,592565,1210,2651,395863,1323,2707,265877}

/// <summary>

/// 获取对应日期的农历

/// </summary>

/// <param name="dtDay">公历日期</param>

/// <returns></returns>

public static string GetLunarCalendar(DateTime dtDay)

{

string sYear = dtDay.Year.ToString()

string sMonth = dtDay.Month.ToString()

string sDay = dtDay.Day.ToString()

int year

int month

int day

try

{

year = int.Parse(sYear)

month = int.Parse(sMonth)

day = int.Parse(sDay)

}

catch

{

year = DateTime.Now.Year

month = DateTime.Now.Month

day = DateTime.Now.Day

}

int nTheDate

int nIsEnd

int k, m, n, nBit, i

string calendar = string.Empty

//计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)

nTheDate = (year - 1921) * 365 + (year - 1921) / 4 + day + MonthAdd[month - 1] - 38

if ((year % 4 == 0) &&(month >2))

nTheDate += 1

//计算天干,地支,月,日

nIsEnd = 0

m = 0

k = 0

n = 0

while (nIsEnd != 1)

{

if (LunarData[m] <4095)

k = 11

else

k = 12

n = k

while (n >= 0)

{

//获取LunarData[m]的第n个二进制位的值

nBit = LunarData[m]

for (i = 1i <n + 1i++)

nBit = nBit / 2

nBit = nBit % 2

if (nTheDate <= (29 + nBit))

{

nIsEnd = 1

break

}

nTheDate = nTheDate - 29 - nBit

n = n - 1

}

if (nIsEnd == 1)

break

m = m + 1

}

year = 1921 + m

month = k - n + 1

day = nTheDate

return year + "-" + month + "-" + day

// #region 格式化日期显示为三月廿四

// if (k == 12)

// {

// if (month == LunarData[m] / 65536 + 1)

// month = 1 - month

// else if (month >LunarData[m] / 65536 + 1)

// month = month - 1

// }

//

// //生肖

// calendar = ShengXiao[(year-4)%60%12].ToString() +"年 "

// // //天干

// // calendar += TianGan[(year-4)%60%10].ToString()

// // //地支

// // calendar += DiZhi[(year-4)%60%12].ToString() + " "

//

// //农历月

// if(month <1)

// calendar += "闰" + MonthName[-1*month].ToString() + "月"

// else

// calendar += MonthName[month].ToString()+"月"

//

// //农历日

// calendar += DayName[day].ToString()+ "日"

//

// return calendar

//

// #endregion

}

}

是js做的!

关键是这个

<script language="JavaScript" type="text/javascript">

<!--

calendar()

//-->

</script>

下面这段代码 就是:请粘贴到HTML中测试 <script language="JavaScript">

<!--

var bsYear

var bsDate

var bsWeek

var arrLen=8//数组长度

var sValue=0//当年的秒数

var dayiy=0//当年第几天

var miy=0//月份的下标

var iyear=0//年份标记

var dayim=0//当月第几天

var spd=86400//每天的秒数

var year1999="302929302929302930303029"//354

var year2000="303029293029293029303029"//354

var year2001="30302930293029293029302930"//384

var year2002="303029302930292930293029"//354

var year2003="303029303029302929302930"//355

var year2004="29302930302930293029302930"//384

var year2005="293029302930302930293029"//354

var year2006="30293029303029293030292930" var month1999="正月二月三月四月五月六月七月八月九月十月十一月十二月"

var month2001="正月二月三月四月闰四月五月六月七月八月九月十月十一月十二月"

var month2004="正月二月闰二月三月四月五月六月七月八月九月十月十一月十二月"

var month2006="正月二月三月四月五月六月七月闰七月八月九月十月十一月十二月"

var Dn="初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十" var Ys=new Array(arrLen)

Ys[0]=919094400Ys[1]=949680000Ys[2]=980265600

Ys[3]=1013443200Ys[4]=1044028800Ys[5]=1074700800

Ys[6]=1107878400Ys[7]=1138464000 var Yn=new Array(arrLen)//农历年的名称

Yn[0]="己卯年"Yn[1]="庚辰年"Yn[2]="辛巳年"

Yn[3]="壬午年"Yn[4]="癸未年"Yn[5]="甲申年"

Yn[6]="乙酉年"Yn[7]="丙戌年"

var D=new Date()

var yy=D.getYear()

var mm=D.getMonth()+1

var dd=D.getDate()

var ww=D.getDay()

if (ww==0) ww=" <font color=RED>星期日"

if (ww==1) ww="星期一"

if (ww==2) ww="星期二"

if (ww==3) ww="星期三"

if (ww==4) ww="星期四"

if (ww==5) ww="星期五"

if (ww==6) ww=" <font color=RED>星期六"

ww=ww

var ss=parseInt(D.getTime() / 1000)

if (yy <100) yy="19"+yy for (i=0i <arrLeni++)

if (ss>=Ys[i]){

iyear=i

sValue=ss-Ys[i]//当年的秒数

}

dayiy=parseInt(sValue/spd)+1//当年的天数 var dpm=year1999

if (iyear==1) dpm=year2000

if (iyear==2) dpm=year2001

if (iyear==3) dpm=year2002

if (iyear==4) dpm=year2003

if (iyear==5) dpm=year2004

if (iyear==6) dpm=year2005

if (iyear==7) dpm=year2006

dpm=dpm.split("") var Mn=month1999

if (iyear==2) Mn=month2001

if (iyear==5) Mn=month2004

if (iyear==7) Mn=month2006

Mn=Mn.split("") var Dn="初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十"

Dn=Dn.split("") dayim=dayiy var total=new Array(13)

total[0]=parseInt(dpm[0])

for (i=1i <dpm.length-1i++) total[i]=parseInt(dpm[i])+total[i-1]

for (i=dpm.length-1i>0i--)

if (dayim>total[i-1]){

dayim=dayim-total[i-1]

miy=i

}

bsWeek=ww

bsDate=yy+"年"+mm+"月"

bsDate2=dd

bsYear="农历"+Yn[iyear]

bsYear2=Mn[miy]+Dn[dayim-1]

if (ss>=Ys[7]||ss <Ys[0]) bsYear=Yn[7]

function CAL(){

document.write(" <table border='1' cellspacing='3' width='105' bordercolor='#000000' bgcolor='#FFFFFF' height='110' cellpadding='2'")

document.write(" <tr><td align='center'><b><font color=#008040>"+bsDate+" </font><br><font face='Arial' size='6' color=#FF8040>"+bsDate2+" </font><br><font color=#008040><span style='FONT-SIZE: 10.5pt'>")

document.write(bsWeek+" </span><br>"+" <br></b><font color=#9B4E00>")

document.write(bsYear+" <br>"+bsYear2+" </td></tr></table>")

}

//-->

</script>

<script language="javascript">CAL()</script>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11434001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存