<%
'Option explicite
'*********************************************
' Nom de la classe : ChinaDay
'But:
' Calculer les tiges et branches du calendrier lunaire de la date et le signe du zodiaque de l'année en fonction de la date saisie
' Utilisation :
'Le premier paramètre est le paramètre d'entrée. S'il n'est pas renseigné, il correspond par défaut au jour actuel.
'Ne calculez que les dates après 1921-2-8
' ##-------------------------------------------------------------- -##
'Dim objChinaDay
' Dim sJour, sSemaineJour, sChineJour, sChineAnnée, sChineAni
' Définir objChinaDay = Nouveau ChinaDay
' Appelez objChinaDay.Action("",sDay,sWeekDay,sChinaYear,sChinaDay,sChinaAni)
' Réponse.Écrire sDay&"<BR>"
' Réponse.Écrire sWeekDay&"<BR>"
' Réponse.Écrivez sChinaYear&"<BR>"
' Réponse.Écrivez sChinaDay&"<BR>"
' Réponse.Écrivez sChinaAni&"<BR>"
' ##-------------------------------------------------------------- -##
'Modifier par:Babyt (Artest)
'Mail : [email protected]
'Bienvenue à :
' http://blog.csdn.net/babyt/
" http://www.facesun.cn
' Créé le : 2005-2-20
' Copyright : ce code n'est pas original et a été collecté en 2001. L'auteur original est inconnu.
'Licence : Gratuit
'************************************************ * ***
ClasseChineJour
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
'Initialiser les données
SousClasse_Initialize()
'------------------------------------------------ - -
'Définir la chaîne d'affichage
'Nom de la semaine
arrNomSemaine(0) = "*"
arrWeekName(1) = "Dimanche"
arrWeekName(2) = "Lundi"
arrWeekName(3) = "Mardi"
arrWeekName(4) = "Mercredi"
arrWeekName(5) = "Jeudi"
arrWeekName(6) = "Vendredi"
arrWeekName(7) = "Samedi"
'Nom de la racine céleste
arrTianGan(0) = "A"
arrTianGan(1) = "B"
arrTianGan(2) = "C"
arrTianGan(3) = "丁"
arrTianGan(4) = "五"
arrTianGan(5) = "自"
arrTianGan(6) = "庚"
arrTianGan(7) = "Xin"
arrTianGan(8) = "嬣"
arrTianGan(9) = "癸"
'Nom de la branche terrestre
arrDiZhi(0) = "子"
arrDiZhi(1) = "moche"
arrDiZhi(2) = "Yin"
arrDiZhi(3) = "卯"
arrDiZhi(4) = "陈"
arrDiZhi(5) = "巳"
arrDiZhi(6) = "après-midi"
arrDiZhi(7) = "Pas"
arrDiZhi(8) = "Shen"
arrDiZhi(9) = "Vous"
arrDiZhi(10) = "戌"
arrDiZhi(11) = "海"
'Nom du zodiaque
arrShuXiang(0) = "rat"
arrShuXiang(1) = "Vache"
arrShuXiang(2) = "Tigre"
arrShuXiang(3) = "Lapin"
arrShuXiang(4) = "龙"
arrShuXiang(5) = "Serpent"
arrShuXiang(6) = "cheval"
arrShuXiang(7) = "Mouton"
arrShuXiang(8) = "Singe"
arrShuXiang(9) = "Poulet"
arrShuXiang(10) = "chien"
arrShuXiang(11) = "Cochon"
'Nom de la date du calendrier lunaire
arrDayName(0) = "*"
arrDayName(1) = "Premier jour de collège"
arrDayName(2) = "Deuxième jour de lycée"
arrDayName(3) = "Le troisième jour du collège"
arrDayName(4) = "Quatrième jour"
arrDayName(5) = "Le cinquième jour du mois lunaire"
arrDayName(6) = "Le sixième jour du mois lunaire"
arrDayName(7) = "Septième jour"
arrDayName(8) = "Le huitième jour du mois lunaire"
arrDayName(9) = "Neuvième jour du mois lunaire"
arrDayName(10) = "Le dixième jour du mois lunaire"
arrDayName(11) = "Onze"
arrDayName(12) = "Douze"
arrDayName(13) = "Treize"
arrDayName(14) = "Quatorze"
arrDayName(15) = "Quinze"
arrDayName(16) = "Seize"
arrDayName(17) = "Dix-sept"
arrDayName(18) = "Dix-huit"
arrDayName(19) = "Dix-neuf"
arrDayName(20) = "Vingt"
arrDayName(21) = "Vingt et un"
arrDayName(22) = "Vingt-deux"
arrDayName(23) = "Vingt-trois"
arrDayName(24) = "Vingt-quatre"
arrDayName(25) = "Vingt-cinq"
arrDayName(26) = "Vingt-six"
arrDayName(27) = "Vingt-sept"
arrDayName(28) = "Vingt-huit"
arrDayName(29) = "Vingt-neuf"
arrDayName(30) = "Trente"
'Nom du mois lunaire
arrMonNom(0) = "*"
arrMonName(1) = "Positif"
arrMonName(2) = "二"
arrMonName(3) = "三"
arrMonName(4) = "quatre"
arrMonName(5) = "c'est"
arrMonName(6) = "六"
arrMonName(7) = "sept"
arrMonName(8) = "huit"
arrMonName(9) = "九"
arrMonName(10) = "十"
arrMonName(11) = "Onze"
arrMonName(12) = "Ra"
'------------------------------------------------ - -------
'Définition des données de tolérance
'Le nombre de jours devant chaque mois dans le calendrier grégorien
MoisAjout(0) = 0
MoisAjout(1) = 31
MoisAjout(2) = 59
MoisAjout(3) = 90
MoisAjout(4) = 120
MoisAjout(5) = 151
MoisAjout(6) = 181
MoisAjout(7) = 212
MoisAjout(8) = 243
MoisAjout(9) = 273
MoisAjout(10) = 304
MoisAjout(11) = 334
'Données du calendrier lunaire
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
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
Fin du sous-marin
'############################################## ## #########
'Méthode principale Action
' inDay Entrez la date, si elle n'est pas saisie, elle est par défaut la date actuelle
Date au format chinois 'sDay
' sWeekDay Jour de la semaine
' sChineAnnée Nouvel An lunaire
' sChinaDay jour lunaire
' sChineAni signe du zodiaque
'############################################## ## #########
Action de fonction publique (inDay, sDay, sWeekDay, sChinaYear, sChinaDay, sChinaAni)
'Convertir la date à convertir
Si inDay="" ou non IsDate(inDay) Alors
'Obtenir l'heure actuelle du système
curTime = Maintenant()
Autre
curTime = CDate (inDay)
Fin si
Si Datediff("d",curTime,Cdate("1921-2-8"))>0 Alors
Fonction de sortie
Fin si
'Générer l'année, le mois et le jour du calendrier grégorien actuel ==> sDay
curYear = Année (curTime)
curMonth = Mois (curTime)
curDay = Jour (curTime)
sDay = curYear&"année"
Si (curMonth < 10) Alors
sJour = sJour&"0"&curMonth&"mois"
Autre
sDay = sDay&curMonth&"mois"
Fin si
Si (curDay < 10) Alors
sDay = sDay&"0"&curDay&"日"
Autre
sDay = sDay&curDay&"日"
Fin si
'Générer la semaine du calendrier grégorien en cours ==> sWeekDay
curWeekday = Jour de la semaine (curTime)
sWeekDay = arrWeekName (curWeekday)
'Calculer le nombre de jours jusqu'à l'heure initiale du 8 février 1921 : 1921-2-8 (le premier jour du premier mois lunaire)
TheDate = (curYear - 1921) * 365 + Int ((curYear - 1921) / 4) + curDay + MonthAdd (curMonth - 1) - 38
Si ((curYear Mod 4) = 0 ET curMonth > 2) Alors
LaDate = LaDate + 1
Fin si
'Calculez les tiges célestes, les branches terrestres, les mois et les jours du calendrier lunaire
estFin = 0
m = 0
'---------------------------------------------
Faire
Si (NongliData(m) < 4095) Alors
k=11
Autre
k = 12
Terminer si
n = k
'---------------------------------------------
Faire
Si (n < 0) Alors
Quitter Faire
Fin si
'Obtenir la valeur du nième chiffre binaire de NongliData(m)
bit = NongliData(m)
Pour i = 1 à n Étape 1
bit = Int(bit / 2)
Suivant
bit = bit Mod 2
Si (TheDate <= 29 + bit) Alors
estFin = 1
Quitter Faire
Fin si
LaDate = LaDate - 29 - bits
n=n-1
Boucle
'---------------------------------------------
Si (isEnd = 1) Alors
Quitter Faire
Fin si
m = m + 1
Boucle
'---------------------------------------------
curYear = 1921 + m
moiscur = k - n + 1
curDay = LaDate
Si (k = 12) Alors
Si (curMonth = (Int(NongliData(m) / 65536) + 1)) Alors
moiscur = 1 - moiscur
ElseIf (curMonth > (Int(NongliData(m) / 65536) + 1)) Then
moiscur = moiscur - 1
Terminer si
Fin si
'Générer des tiges célestes et des branches terrestres du calendrier lunaire ==> sChinaYear
sChinaYear = "Calendrier Lunaire"&arrTianGan(((curYear - 4) Mod 60) Mod 10)&arrDiZhi(((curYear - 4) Mod 60) Mod 12)&"Year"
'Générer le zodiaque ==> sChinaAni
sChinaAni = arrShuXiang(((curYear - 4) Mod 60) Mod 12)
'Générer le mois et le jour lunaires ==> NongliDayStr
Si (curMonth < 1) Alors
sChinaDay = "Leap"&arrMonName(-1 * curMonth)
Autre
sChinaDay = arrMonName(curMonth)
Fin si
sChinaDay = sChinaDay&"mois"
sChinaDay = sChinaDay & arrDayName(curDay)
Fonction de fin
Fin du cours
%>