9.1 Fecha y hora
§1 Obtener fecha y hora del sistema en formato texto.
#include <iostream.h>
#include <time.h>
void main(void) {
time_t t;
time(&t);
struct tm* petm = localtime(&t);
cout << "Procesando: " << asctime(petm) <<
endl;
}
Salida:
Procesando: Fri Apr 20 11:35:34 2001
§2 Obtener fecha y hora del sistema en formato texto seteando la variable de
entorno TZ
#include <iostream>
using namespace std;
#include <time.h>
#include <stdlib.h>
void main(void) { // =========
time_t td;
putenv("TZ=PST8PDT");
tzset();
time(&td);
cout << "Tiempo actual: " <<
asctime(localtime(&td)) << endl;
}
Salida:
Tiempo actual: Wed Sep 05 13:00:03 2001
§3 Datos de fecha y hora:
#include <iostream.h>
#include <time.h>
int main(void) { // ==========
char* ds[7] =
{"Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"};
time_t t;
time(&t);
struct tm* petm = localtime(&t);
long dgt = _timezone/60;
cout << "Hora local:\n"
"Diferencia con
Greenwich = " << dgt << " minutos " <<
(dgt == 0 ?
"\n" : (dgt < 0 ? "adelanto\n" :
"atraso\n"));
cout << "hora: " << petm->tm_hour <<
" (0/24)" << endl;
cout << "minuto: " << petm->tm_min <<
endl;
cout << "segundo: " << petm->tm_sec <<
endl;
cout << "dia de mes: " << petm->tm_mday
<< " (1/31)" << endl;
cout << "dia de semana: " << ds[petm->tm_wday]
<< endl;
cout << "dia del año: " << petm->tm_yday+1
<< " (1/366)" << endl;
cout << "mes: " << petm->tm_mon+1 <<
endl;
cout << "A\xa4o: " << petm->tm_year+1900
<< endl;
cout << "Horario: " << (petm->tm_isdst ?
"Verano" : "Invierno") << endl;
}
Salida:
Hora local:
Diferencia con Greenwich = -60 minutos adelanto
hora: 19 (0/24)
minuto: 16
segundo: 48
dia de mes: 20 (1/31)
dia de semana: Viernes
dia del a±o: 110 (1/366)
mes: 4
Año: 2001
Horario: Verano
§ 4 Controlar
intervalos de tiempo en el programa
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>
void main(void) { // ==========
clock_t ini, fin;
long lg =0;
ini = clock();
for (volatile int x = 1; x < 1000000; x++) lg++;
fin = clock();
printf("Retardo-1: %f\n", (fin - ini) / CLK_TCK);
lg =0;
ini = clock();
for (register int y = 1; y < 1000000; y++) lg++;
fin = clock();
printf("Retardo-2: %f\n", (fin - ini) / CLK_TCK);
}
Salida:
Retardo-1: 0.034000
Retardo-1: 0.013000
§5 Realizar una pausa
Para realizar una pausa de duración controlada en el programa, puede utilizarse la función delay() que sigue; el número de segundos de duración se pasa como argumento.
#include <time.h>
void delay(int seconds) {
for(int inicio = (time(NULL) + seconds); time(NULL)!= inicio; time(NULL)){
}
}
Ejemplo de aplicación:
#include <time.h>
void delay(int);
int main() { // ================
delay(10);
return 0;
}
void delay(int seconds) {
for (int inicio = time(NULL) + seconds; time(NULL) != inicio; time(NULL)) { }
}