Calendario almanaque

Fecha de conversión de estructura

{

int Fuente

int SolarYear

int SolarMonth

int SolarDate

Período del calendario lunar;

Período mensual;

Período mensual;

int Weekday

int Kan

int Chih

};

unsigned _ _ int 64m _ ui 64 solarterms【24】;

unsigned _ _ int 64m _ ui 64 meses días【13】;

m _ ui64 días del mes【0】= 0ui 64

m _ ui 64 días del mes【1】= 31ui 64; > m_ui 64 días del mes【2】= 28ui 64;

m_ui 64 días del mes【3】= 31ui 64;

m_ui 64 días del mes【4】= 30ui 64

p>

m _ ui 64 días del mes [5] = 31ui 64;

m _ ui 64 días del mes [6] = 30ui 64; 7】= 31ui 64;

m_ui 64 días del mes【8】= 31ui 64;

m_ui 64 días del mes【9】= 30ui 64; _ ui64 días del mes【10】= 31ui 64;

m _ ui 64 días del mes【11】= 30ui 64;

m_ui 64 solarterms【0】= 0ui 64

m_ui 64 solarterms【1】= 21208 ui 64; terminos solares【2】= 42467 ui 64;

m _ ui 64 términos solares【3】= 63836 ui 64;

m _ ui 64 solarterms【5】= 107014ui 64

m _ ui 64 solarterms【6】= 128867 ui 64;

m _ ui 64 solarterms 【7】= 150921ui 64;

m_ui 64 términos solares【8】= 173149 ui 64;

m_ui 64 términos solares 【9】= 195551ui 64;

m _ ui 64 términos solares【10】= 218072 ui 64

m _ ui 64 términos solares【11】= 240693 ui 64

m _ ui 64 términos solares【12; 】= 263343 interfaz de usuario 64;

m _ interfaz de usuario 64

terminos solares【13】= 285989 ui 64;

m _ ui 64 términos solares【14】= 308563 ui 64; /p>

m _ ui 64 términos solares【16】= 353350 ui 64;

m _ ui 64 términos solares【17】= 375494 ui 64; terminos solares【18】= 397447 ui 64;

m _ ui 64 términos solares【19】= 419210ui 64

m _ ui 64 términos solares【20】= 440795 ui 64; p>p>

m_ui 64 solarterms【21】= 462224 ui 64;

m_ui 64 solarterms【22】= 483532 ui 64; 64 solarterms 【23】= 504758 ui 64;

/*Cálculo de veinticuatro términos solares*/

int _ _ fastcall es año bisiesto (int iYear)

{

if ((iYear amp; 3) != 0)

{

Devuelve 0;

}

si no (iAño 100! = 0)

{

Devuelve 1;

}

si no ( iAño 400 = = 0)

{

Devolución 1;

}

Otros

{

Devuelve 0;

}

}

int _ _ fastcall TheSolarTerm(int iYear, int n)

{

unsigned _ _ int 64k;

unsigned _ _ int 64 ddate _ utc = 22085493000000 ui 64;

unsigned __int64 doffdate, dadddate

fecha de salida = m _ ui 64 solarterms [n] * 600000 ui 64;

fecha de salida = static _ cast lt; _ int64 gt (iYear-1900) * 315569259747 ui

doffdate-= ddate_utc;

fecha doff/= 864000000 ui 64; //86400: 60 * 60 * 24 * 1000

int I = 1969;

p>

dadddate = 0ui64

mientras(dadddate lt; dadddate)

{

i;

k = dadddate

dadddate = 365 ui 64 static _ cast lt; unsigned _ _ int64 gt(IsLeapYear(I));

};

if (dadddate gt; dadddate)

{

int j = 0;

dadddate = k ;

mientras (dadddate lt; dadddate amp ampj lt12)

{

j ;

k = dadddate

dadddate = m _ ui 64 días del mes【j】;

if (j == 2 amp; amp (IsLeapYear(I)!= 0))

{< /p >

dadddate;

}

};

return static_cast ltint gt(dadd date -k 1ui 64);

}

else // j = fecha de salida

{

devuelve 1;

}

}

int CalConv(struct ConvDate amp; disc)

{

int jump, d, sm, y, im, l1, l2, acc, I,lm, KC;

if (cd.source == 0) /* Solar */

{

if (cd.SolarYear lt=ésimo año || cd . SolarYear gt el año pasado)

{

devuelve 1;

}

sm = cd. mes solar-1;

if (sm lt; 0 | | sm gt11)

{

retorno 2;

}

salto = obtener salto (CD. año solar);

d = (sm = = 1)? (Salto 28): solar cal【sm】;

If (cd. SolarDate lt1 || cd. SolarDate gtd)

{

Return 3; /p>

}

y = cd. Solar - primer año;

ACC = días solares [salto] [sm] CD. FechaSolar

CD. día laborable = (ACC lunar cal[y]. día laborable base) 7;

KC = ACC lunar cal[y]. BaseKanChih

CD. Kan = KC 10;

CD. chih = KC 12;

if (ACC lt; = cal lunar[y]. Fecha base)

{

y-;

CD. Año Lunar = cd. año solar-1;

salto = obtener salto (CD. año lunar);

sm = 12

ACC = días solares [salto] [sm; ] CD. SolarDate

}

Otro

{

CD. Año Lunar = cd. AñoSolar

}

l 1 = cal[y] lunar.

Día base;

for(I = 0;i lt13;i)

{

L2 = l 1 cal[y] lunar. mes días【I】29;

if (ACC lt; = l2)

{

Descanso;

}

l 1 = L2;

}

CD. mes lunar = I 1;

CD. fecha lunar = ACC-l 1;

im = cal[y] lunar. intercalación;

if (im!= 0 amp amp disc.crescent gtim)

{

disc. mes lunar-;

if (cd. LunarMonth == im)

{

CD. mes lunar = -im;

}

}

if (cd. luna nueva gt12)

{

CD. mes lunar-= 12;

}

}

else /* Lunar */

{

if (cd. LunarYear lt primer año || cd. LunarYear gt = año pasado)

{

return 1;

}

y = cd. Año Nuevo Lunar - el primer año;

im = cal lunar[y]. intercalación;

lm = cd. Mes Lunar

if (lm lt; 0)

{

if (lm != -im)

{

Devolver 2;

}

}

si no (lm lt; 1 | | lm gt; 12)

{

Devuelve 2;

}

Si (¡estoy! = 0)

{

si ( lm gt;im)

{

lm;

}

si no (lm = =-im)

{

lm = soy 1;

}

}

lm-;

si (cd. LunarDate gtlunar cal [y] número de días en el mes [lm] 29)

{

Return 3;

}

ACC = cal lunar【y】. día base;

for(I = 0; i ltlm; i )

{

ACC = cal lunar[y]. mes días【I】29;

}

acc = cd. LunarDate

salto = get salto(CD. año lunar);

for(i = 13; i = 0; i -)

{

if (ACC gt; SolarDays [salto] [I])

{

Descanso

}

}

CD. fecha solar = ACC-días solares[salto][I];

If (i lt= 11)

{

CD.

AñoSolar = cd. Año Lunar

CD. mes solar = I 1;

}

Otro

{

CD. AñoSolar = cd. año lunar 1;

CD. mes solar = I-11;

}

salto = obtener salto (CD. año solar); Solar - primer año;

ACC = días solares[salto][CD. mes solar-1] CD. FechaSolar

CD. día laborable = (ACC lunar cal[y]. día laborable base) 7;

KC = ACC lunar cal[y]. BaseKanChih

CD. Kan = KC 10;

CD. chih = KC 12;

}

Devuelve 0;

}