Disponible la nueva versión "donationware" 7.3 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)) { }
}