Anuario de Google

Conversión de estructura

{

int source;

int SolarYear

int SolarMonth

int SolarDate

Período del calendario lunar;

Período del mes del calendario lunar;

int LunarDate

int día laborable;

int Kan< /p >

int Chih

};

unsigned _ _ int 64m _ ui 64 términos solares[24];

unsigned _ _ int 64m _ ui64 días del mes[13];

m_ui64 días del mes[0]= 0ui 64;

m_ui64 días del mes[1]= 31ui 64;

m_ui64 días del mes[2]= 28ui 64;

m_ui64 días del mes[3]= 31ui 64;

m_ui64 días del mes[4]= 30ui 64 ;

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

m _ ui64 días del mes[6]= 30ui 64;

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

m_ui64 días del mes[8]= 31ui 64;

m_ui64 días del mes[9]= 30ui 64;

m_ui64 días del mes[10]= 31ui 64 ;

m_ui 64 días del mes[11]= 30ui 64;

m_ui64 días del mes[12] = 31ui 64;

m _ ui 64 solarterms[0 ]= 0ui 64;

m _ ui 64 solarterms[1]= 21208 ui 64;

m _ ui 64 solarterms[2]= 42467 ui 64;

m _ ui 64 solarterms[3]= 63836 ui 64;

m _ ui 64 solarterms[4]= 85337 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 solarterms[8]= 173149 ui 64;

m _ ui 64 solarterms[9]= 195551ui 64

m _ ui 64 solarterms[10]= 218072 ui 64;

m _ ui 64 términos solares[11]= 240693 ui 64;

m _ ui 64 términos solares[12]= 263343 ui 64; _ ui 64 solarter

ms[13]= 285989 ui 64;

m _ ui 64 solarterms[14]= 308563 ui 64;

m _ ui 64 solarterms[15]= 331033 ui 64;

m_ui 64 solarterms[16]= 353350 ui 64;

m_ui 64 solarterms[17]= 375494 ui 64; solarterms[18]= 397447 ui 64;

m _ ui 64 solarterms[19]= 419210ui 64

m _ ui 64 solarterms[20]= 440795 ui 64;

p>

m _ ui 64 solarterms[21]= 462224 ui 64;

m _ ui 64 solarterms[22]= 483532 ui 64; m _ ui 64 solarterms [23]= 504758 ui 64;

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

int _ _ la llamada rápida es el año bisiesto (int iYear)

{

Si ((iYear amp3) != 0)

{

Devuelve 0;

}

si no (iAño 100! = 0)

{

Devuelve 1;

}

si no ( iAño 400 == 0)

{

Devolver 1

}

Otros

{

Devuelve 0;

}

}

int _ _ llamada rápida 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 64;

fecha de salida-= ddate_utc;

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

int I = 1969 ;

p>

dadddate = 0ui64

mientras(dadddate lt; doffdate)

{

i;

k = dadddate

dadd fecha = 365 ui 64 static _ cast lt unsigned _ _ int64 gt(IsLeapYear(I)

));

};

if(dadddate gt;doffdate)

{

int j = 0;

dadd fecha = k;

mientras(dadddate lt;doffdate amp ampj lt12)

{

j;

k = dadddate

dadd fecha = m_ui 64 días del mes[j];

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

p>

{

fecha del papá;

}

};

return static_cast ltint gt(fecha del papá - k 1ui 64);

}

else // j = doffdate

{

Devuelve 1;

}

}

int CalConv(struct ConvDate amp; CD)

{

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

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

{

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

{

Retorno 1;

}

sm = cd. mes solar-1;

if(sm lt; 0 | | sm gt11)

{

retorno 2;

}

salto = GetLeap(cd.año solar);

d = (sm == 1)? (Salto 28): solar cal[sm];

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

{

Return 3; /p>

}

y = cd. SolarYear - primer año;

acc = SolarDays[leap][sm] cd. FechaSolar

CD. Día laborable = (acc LunarCal[y]). día laborable base) 7;

kc = acc LunarCal[y]. BaseKanChih

CD. Kan = KC 10;

CD. chih = KC 12;

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

{

y-;

CD. Año Lunar = cd. oreja solar-1

salto = GetLeap(cd.lunar año);

sm = 12

acc = SolarDays[leap][sm] cd; . SolarDate

}

Otro

{

CD. Año Lunar = cd.

AñoSolar

}

l1 = Cal Lunar[y]. día base;

for(I = 0; i lt13; i )

{

l2 = l1 LunarCal[y]. 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 = LunarCal[y]. intercalación;

if (im!= 0 amp amp disc. LunarMonth gt im)

{

disc. mes lunar-;

if (cd. LunarMonth == im)

{

CD. mes lunar = -im;

}

}

if (cd. LunarMonth gt12)

{

CD. mes lunar-= 12;

}

}

else /* Lunar */

{

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

{

Retorno 1;

}

y = cd. Año Nuevo Lunar - Año 1;

im = LunarCal[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; mensaje instantáneo)

{

lm ;

}

si no (lm == -im)

{

lm = soy 1;

}

}

lm-;

if (cd. LunarDate gtLunarCal[y]. Días en el mes [lm] 29)

{

devuelve 3;

}

cuenta = LunarCal[y]. día base;

for(I = 0; i ltlm; i )

{

acc = LunarCal[y]. mes días[I] 29;

}

acc = cd. LunarDate

salto = GetLeap(cd.año lunar);

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

{

if(ACC gt; días solares[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 = GetLeap(cd. año solar); SolarYear - primer año;

acc = SolarDays[leap][cd. Mes Solar - 1] cd. FechaSolar

CD. Día laborable = (acc LunarCal[y]). día laborable base) 7;

kc = acc LunarCal[y]. BaseKanChih

CD. Kan = KC 10;

CD. chih = KC 12;

}

Devuelve 0;

}