¡Nuevo!  por fin disponible la versión 5 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


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)) { }
}