¿Cómo obtener el calendario lunar de una fecha determinada usando ASP?

Simplemente completa el código en una página asp

Visita mi blog cuando no tengas nada que hacer

/superyhao

Jaja

El siguiente código comienza:

lt;

'Option Explicit

'********** * **********************************

' Nombre de la clase: ChinaDay

' Propósito:

' Calcular los tallos lunares y las ramas terrestres de la fecha y el signo zodiacal del año según la fecha ingresada

' Uso:

' El parámetro del Capítulo Uno es un parámetro de entrada. Si no se completa, el valor predeterminado es el día actual.

' Solo se calculan las fechas posteriores a 1921-2-8.

' ##--------- ----------------------------------##

' Dim objChinaDay

' Dim sDay, sWeekDay, sChinaDay, sChinaYear, sChinaAni

' Set objChinaDay = New ChinaDay

' Llamar a objChinaDay. Action("", sDay, sWeekDay, sChinaYear, sChinaDay , sChinaAni)

' Response.Write sWeekDayamp;"lt;BRgt;"

' Response.Write sWeekDayamp;"lt; BRgt;"

' Respuesta.Escribe sChinaYearamp;"lt;BRgt;"

' Respuesta.Escribe sChinaDayamp;"lt;BRgt;"

' Respuesta .Escribe sChinaAniamp;"lt;BRgt;"

p>

'****************************** ****************** *************

Clase ChinaDay

Dim arrWeekName( 7), MonthAdd(11), NongliData(99)

Dim arrTianGan(9), arrDiZhi(11), arrShuXiang(11), arrDayName(30), arrMonName(12)

Dim curTime, curYear, curMonth, curDay, curWeekday

Dim i , m, n, k, isEnd, bit, TheDate

'Datos de inicialización

Sub Class_Initialize()

'--------- ------------------------------ ------------

' Definir cadena de visualización

'Nombre de la semana

arrWeekName(0) = "*"

arrWeekName(1) = "Domingo"

arrWeekName(2) = "Lunes"

arrWeekName(3) = "Martes"

arrWeekName(4) = "miércoles"

arrWeekName(5) = "jueves"

arrWeekName(6) = "viernes"

arrWeekName(7) = "Sábado"

'Nombre de Tiangan

arrTianGan(0) = "A"

arrTianGan(1) = "B"

arrTianGan(2) = "C"

arrTianGan(3) = "D"

arrTianGan(4) = "五"

arrTianGan(5) = "九"

arrTianGan(6) = "庚"

arrTianGan(7) = "心"

arrTianGan(8 ) = "ren"

arrTianGan(9) = "癸"

'Nombre de la rama terrestre

arrDiZhi(0) = "子"

arrDiZhi(1) = "Chou"

arrDiZhi(2) = "寅"

arrDiZhi(3) = "卯"

arrDiZhi(4 ) = "陈"

arrDiZhi(5) = "巳"

arrDiZhi(6) = "Wu"

arrDiZhi(7) = "Wei"

arrDiZhi(8) = "Shen"

arrDiZhi(9) = "酉"

arrDiZhi(10) = "戌"

arrDiZhi(11) = "海"

'Nombre del zodiaco

arrShuXiang(0) = "Rata"

arrShuXiang(1) = "Vaca"

arrShuXiang(2) = "Tigre"

arrShuXiang(3) = "Conejo"

arrShuXiang(4) = "Dragón"

arrShuXiang(5) = "Serpiente"

arrShuXiang(6) = "Caballo"

arrShuXiang(7) = "Oveja"

arrShuXiang(8 ) = "Mono"

arrShuXiang(9) = "Pollo"

arrShuXiang(10) = "Perro"

arrShuXiang(11) = "Cerdo"

'Nombre de la fecha del calendario lunar

arrDayName(0) = "*"

arrDayName(1) = "Día de Año Nuevo"

arrDayName (2) = "Segundo día de escuela secundaria"

arrDayName(3) = "Tercer día de escuela secundaria"

arrDayName(4) = " Cuarto día de la escuela secundaria"

arrDayName(5 ) = "El quinto día del mes lunar"

arrDayName(6) = "El sexto día del mes lunar"

arrDayName(7) = "El séptimo día del mes lunar"

arrDayName(8) = "Octavo día"

arrDay

Name(9) = "El noveno día del mes lunar"

arrDayName(10) = "El décimo día del mes lunar"

arrDayName(11) = "El undécimo día"

arrDayName( 12) = "Doce"

arrDayName(13) = "Trece"

arrDayName(14) = "Catorce"

arrDayName(15) = "Quince"

arrDayName(16) = "Dieciséis"

arrDayName(17) = "Diecisiete"

arrDayName (18) = " Dieciocho"

arrDayName(19) = "Diecinueve"

arrDayName(20) = "Veinte"

arrDayName(21) = " Veintiuno "

arrDayName(22) = "Veintidós"

arrDayName(23) = "Veintitrés"

arrDayName(24) = "Veinticuatro"

arrDayName(25) = "Veinticinco"

arrDayName(26) = "Veintiséis"

arrDayName(27) = "Veintisiete"

arrDayName(28) = "Veintiocho"

arrDayName(29) = "Veintinueve"

arrDayName(30 ) = "Treinta"

'Nombre del mes lunar

arrMonName(0) = "*"

arrMonName(1) = "positivo"

arrMonName(2) = "二"

arrMonName(3) = "tres"

arrMonName(4) = "cuatro"

arrMonName( 5) = "cinco"

arrMonName(6) = "Seis"

arrMonName(7) = "Siete"

arrMonName(8) = "Ocho "

arrMonName( 9) = "Nueve"

arrMonName(10) = "Diez"

arrMonName(11) = "Once"

arrMonName(12) = " cera"

'------------------------------- --------- ------------------

'Definición de datos de tolerancia

'El número de días antes de cada mes en el calendario gregoriano

MonthAdd (0) = 0

MonthAdd(1) = 31

MonthAdd(2) = 59

AgregarMes(3) = 90

AgregarMes(4) = 120

AgregarMes(5) = 151

AgregarMes(6) = 181

AñadirMes(7) = 212

AñadirMes(8) = 243

AñadirMes(9) = 273

AnuncioMes

d(10) = 304

MonthAdd(11) = 334

'Datos del calendario lunar

NongliData(0) = 2635

NongliData (1) = 333387

NongliData(2) = 1701

NongliData(3) = 1748

NongliData(4) = 267701

NongliData(5) = 694

NongliData(6) = 2391

NongliData(7) = 133423

NongliData(8) = 1175

NongliData(9) = 396438

NongliData(10) = 3402

NongliData(11) = 3749

NongliData(12) = 331177< / p>

NongliData(13) = 1453

NongliData(14) = 694

NongliData(15) = 201326

NongliData(16) = 2350

NongliData(17) = 465197

NongliData(18) = 3221

NongliData(19) = 3402

NongliData(20 ) = 400202

NongliData(21) = 2901

NongliData(22) = 1386

NongliData(23) = 267611

NongliData ( 24) = 605

NongliData(25) = 2349

NongliData(26) = 137515

NongliData(27) = 2709

NongliData(28) = 464533

NongliData(29) = 1738

NongliData(30) = 2901

NongliData(31) = 330421

NongliData(32) = 1242

NongliData(33) = 2651

NongliData(34) = 199255

NongliData(35) = 1323

NongliData(36) = 529706

NongliData(37) = 3733

NongliData(38) = 1706

NongliData(39) = 398762

NongliData(40) = 2741

NongliData(41) = 1206

NongliData(42) = 267438

NongliData(43) = 2647

NongliData(44) = 1318

NongliData(45) = 204070

NongliData(46) = 3477

NongliData(47) = 461653

NongliData(48) = 1386

NongliData(49) = 2413

NongliData(50) = 330077

NongliData(51) = 1197

NongliData(52) = 2637

NongliData(53) = 268877

NongliData(54) = 3365

NongliData(55) = 531109

NongliData(56) = 2900

NongliData(57) = 2922

NongliData(58) = 398042

NongliData(59) = 2395

NongliData(60) = 1179

NongliData(61) = 267415

NongliData(62) = 2635

NongliData(63 ) = 661067

NongliData(64) = 1701

NongliData(65) = 1748

NongliData(66) = 398772

NongliData (67) = 2742

NongliData(68) = 2391

NongliData(69) = 330031

NongliData(70) = 1175

NongliData(71) = 1611

NongliData(72) = 200010

NongliData(73) = 3749

NongliData(74) = 527717

NongliData(75) = 1452

NongliData(76) = 2742

NongliData(77) = 332397

NongliData(78) = 2350

NongliData(79) = 3222

NongliData(80) = 268949

NongliData(81) = 3402

NongliData(82) = 3493

NongliData(83) = 133973

NongliData(84) = 1386

NongliData(85) = 464219

NongliData(86) = 605

NongliData(87) = 2349

NongliData(88) = 334123

NongliData(89) =

2709

NongliData(90) = 2890

NongliData(91) = 267946

NongliData(92) = 2773

NongliData(93 ) = 592565

NongliData(94) = 1210

NongliData(95) = 2651

NongliData(96) = 395863

NongliData (97) = 1323

NongliData(98) = 2707

NongliData(99) = 265877

End Sub

'## ################################################ ## ######

'Método principal Acción

' inDay Ingrese la fecha; si no se ingresa, el valor predeterminado será la fecha actual

' sDay Chino formato Fecha

' sWeekDay Día de la semana

' sChinaYear Año lunar

' sChinaDay Día lunar

' sChinaAni Signo del zodíaco

'############################################ ## ############

Acción de función pública (inDay, sDay, sWeekDay, sChinaYear, sChinaDay, sChinaAni)

'Convierte la fecha para que convertido

p>

Si inDay="" O no esDate(inDay) Entonces

'Obtiene la hora actual del sistema

curTime = Now()

Else

curTime = CDate(inDay)

End If

If Datediff("d", curTime, Cdate("1921-2- 8"))gt; 0 Then

Salir de la función

End If

'Generar el año, mes y día actual del calendario gregoriano==gt; sDay

curYear = Año(curTime)

curMonth = Mes(curTime)

curDay = Día(curTime)

sDay = curYearamp; "Año"

If (curMonth lt; 10) Then

sDay = sDayamp "0"amp; curMonthamp; >

sDay = sDayamp; curMonthamp ; "mes"

Fin si

Si (curDay lt; 10) Entonces

sDay = sDayamp; "amp; curDayamp; "día"

Else

sDay = sDayamp; curDayamp;"

Day"

End If

'Generar el calendario gregoriano actual semana==gt; sWeekDay

curWeekday = Weekday(curTime)

sWeekDay = arrWeekName(curWeekday)

'Calcula el número de días hasta la hora inicial del 8 de febrero de 1921: 1921-2-8 (el primer día del primer mes lunar)

TheDate = (curYear - 1921) * 365 Int((curYear - 1921) / 4) curDay MonthAdd(curMonth - 1) - 38

If ((curYear Mod 4) = 0 AND curMonth gt; 2 ) Then

TheDate = TheDate 1

End If

'Calcula los tallos del calendario lunar, las ramas terrestres, los meses y los días

isEnd = 0

m = 0

'-------------------------------- -------

Hacer

Si (NongliData(m) lt; 4095) Entonces

k = 11

De lo contrario

k = 12

Finalizar si

n = k

'------------ ------------ -----------

Hacer

Si (n lt; 0) Entonces

Salir Do

End If

'Obtiene el valor del enésimo bit binario de NongliData(m)

bit = NongliData(m)

Para i = 1 To n Paso 1

bit = Int(bit/2)

Siguiente

bit = bit Mod 2

Si (TheDate lt; = 29 bit) Entonces

isEnd = 1

Salir Do

Finalizar si

TheDate = TheDate - 29 - bit

n = n - 1

Bucle

'--------------- ----------- ---------

Si (isEnd = 1) Entonces

Salir Do

Fin si

m = m 1

Bucle

'--------------------- ----------- ----

curYear = 1921 m

curMonth = k - n 1

curDay = TheDate

Si (k = 12 ) Entonces

Si (curMont

h = (Int(NongliData(m) / 65536) 1)) Entonces

curMonth = 1 - curMonth

ElseIf (curMonth gt; (Int(NongliData(m) / 65536) 1)) Entonces

curMonth = curMonth - 1

End if

End If

'Generar calendario lunar tallos celestes y ramas terrestres ==gt ; sChinaYear

sChinaYear = "Calendario Lunar"amp; arrTianGan(((curYear - 4) Mod 60) Mod 10)amp; amp; "Año "

'Generar signo del zodíaco == gt; sChinaAni

sChinaAni = arrShuXiang(((curYear - 4) Mod 60) Mod 12)

'Generar mes lunar, día==gt; NongliDayStr

If (curMonth lt; 1) Then

sChinaDay = "Leap" amp arrMonName(-1 * curMonth)

Else

sChinaDay = arrMonName(curMonth)

End If

sChinaDay = sChinaDayamp "mes"

sChinaDay = sChinaDay amp; arrDayName (curDay)

Función final

Clase final

gt; >Dim objChinaDay

p>

Dim sDay, sWeekDay, sChinaDay, sChinaYear, sChinaAni

Establecer objChinaDay = New ChinaDay

Llamar a objChinaDay.Action(solicitud) ("datos"), sDay, sWeekDay, sChinaYear, sChinaDay, sChinaAni)

Establecer objChinaDay = Nothing

'Response.Write sDayamp;"lt;BRgt;"

'Response.Write sWeekDayamp;" lt;BRgt;"

'Response.Write sChinaYearamp;"lt;BRgt;"

'Response.Write sChinaDayamp;"lt; BRgt;"

'Respuesta.Escribir sChinaAniamp;"lt;BRgt;"

gt;

lt;htmlgt;

lt ;headgt;

lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"gt;

> lt;titlegt;Calendario Lunarlt;/titlegt;

lt;stylegt;

.itm {font-family: 宋体; font-size: 14px;}

.chn {familia de fuentes: 宋体; tamaño de fuente: 12px}

.chnred {familia de fuentes: 宋体; color: #FF0000; tamaño de fuente: 12px}

< p; > .chnblue {familia de fuentes: 宋体; color: #0000FF; tamaño de fuente: 12px}

lt;/stylegt;

lt;/headgt;

lt;body bgcolor="#FFFFFF"gt;

lt;!--Mostrar calendario del sitio--gt;

lt;=sDaygt;?lt;=sWeekDaygt ; ?lt;=sChinaYear amp; "(" amp; sChinaAni amp; ")"gt;?lt;=sChinaDaygt;

lt;form action="?" p>

Ingrese la fecha: lt; input type="text" name="data"gt; font color="#FF0000"gt; p >

lt;br/gt;

lt;input type="submit" value="submit"gt;

lt;/formgt;

lt;/bodygt;

lt;/htmlgt;