Red de conocimiento informático - Aprendizaje de código fuente - Programación de marca de tiempo

Programación de marca de tiempo

# incluir & ltstdio.h & gt

# incluir & lttime.h & gt

void main()

{

hora _ t time _ last

time_last = time(empty);

printf("%ld\n ", time _last //Obtiene el número de segundos desde 1970 hasta ahora); .

Unsigned long v;

Y (1) // es fácil de probar y se puede ingresar en cualquier momento.

{

scanf("%ld ", & amp五);

v = v+ 60 * 60 * 8 //Estamos ubicados en el Este; Octavo Distrito.

int d = v/(60 * 60 * 24)+1; //Obtiene el número de días entre 1970 65438+1 de octubre y los segundos ingresados.

int n =(d+671)/1461; //¿Cuántos 29 de febrero han pasado entremedio?

int año =(d-n)/365+1970; //Obtener el año

If ((d-n)%365 == 0)

{< / p>

Año=Año-1;

}

int m[13] = {0, 31, 28, 31, 30, 31, 30, 31, 30 , 31, 30, 31 }; //Definir las fechas en la tabla de meses

if((año % 400 == 0)| |(año % 4 == 0&& año %100 ! =0)) //Juez año bisiesto

{

m[2]= 29;

}

Otros

p>

{

m[2]= 28;

}

int I

int da = d; - (d-n)/365 * 365-n; // Resta anteayer para obtener el día del año.

int mes, día;

for(I = 0;i<12;i++)

{

if(da & gt; m[i])

{

da = da-m[I]; //Dejemos que el número de días reste el número de días de cada mes.

}

Si (da == 0)

{

mes = I+1;

día = m[I+1];

}

if(da <= m[I+1]&&大!= 0) //si Si el número de días es menor o igual al mes, puede determinar qué día es.

{

Mes = I+1;

Día = da

Pausa; // Salir del bucle después de la confirmación.

}

}

printf("%d-%d-%d\n ", año, mes, día

<); p>int horas, minutos, segundos;

Horas = v %(3600 * 24)/3600;

Minutos = v % 3600/60;

Segundos = v % 60

printf("%d:%d:%d\n ", horas, minutos, segundos);

}

}