Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Horarios

Estas en el tema de Horarios en el foro de C/C++ en Foros del Web. Hola a todos, soy nuevo en este foro. La decisión por la que me he registrado es para ver si alguno de ustedes me puede ...
  #1 (permalink)  
Antiguo 01/09/2009, 19:10
 
Fecha de Ingreso: septiembre-2009
Mensajes: 38
Antigüedad: 14 años, 8 meses
Puntos: 0
Horarios

Hola a todos, soy nuevo en este foro. La decisión por la que me he registrado es para ver si alguno de ustedes me puede solucionar la duda que tengo (la cual me lleva atormetando desde hace mucho tiempo)

Me gustaria crear un programita en el cual me diga la hora de un pais determinado, para recoger el pais por pantalla hago lo siguiente:

fprintf(stderr,"Escriba el pais"); //(ejemplo America/Argentina)
scanf("%s",pais); //char pais [200];

El problema surge ahora, por internet he leido que tengo que invocar a la funcion putenv, pero no entiendo su funcionamiento
El más lógico (o al menos eso creo yo, sería)

putenv("TZ= %s",pais);

Pero si hago eso me da un error del copón, así que, tengo que poner

putenv("TZ= pais");

Y despues pido la hora del sistema pero es que no me da nada de nada.
Algun alma caritativa, me podría ayudar?

Gracias de antemano!!!
  #2 (permalink)  
Antiguo 02/09/2009, 12:35
Avatar de Slackin  
Fecha de Ingreso: noviembre-2007
Ubicación: Puerto Montt, Chile
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 4
Respuesta: Horarios

Según leo, la variable putenv, crea, modifica o remueve variables de ambiente
http://www.cppreference.com/wiki/c/other/putenv
y no es lo que necesitas.Creo que tienes que buscar mejor.

¿En que ambiente estás trabajando? Windows con Visual C++?.
Deberías dar mas detalles

Saludos
  #3 (permalink)  
Antiguo 03/09/2009, 14:41
 
Fecha de Ingreso: septiembre-2009
Mensajes: 38
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Horarios

Estoy trabajando en Linux.

Lo que había pensando era cambiar la variable de entorno TZ para que apuntase al país que le dijese para posteriormente pedir la hora del sistema con la instrucción date.

Se os ocurre algo??

Gracias
  #4 (permalink)  
Antiguo 03/09/2009, 23:24
Avatar de Slackin  
Fecha de Ingreso: noviembre-2007
Ubicación: Puerto Montt, Chile
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 4
Respuesta: Horarios

Saludos
Estuve probando algunos programitas que cambiaban el uso horairio con putenv, y funcionan. Lo que pasa es que cada programa en C++ crea sus propias variables de entorno y que son independientes de las del SO. Asi que cada vez que modificas las Variables de ambiente con un programa en C o C++, modificas las asociadas al ambito del programa.
Hay que buscar alguna funcion que se comunique con las variables de entorno externas al programa. Es buena pregunta.

Intentare buscar a ver que pillo.
  #5 (permalink)  
Antiguo 04/09/2009, 15:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 38
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Horarios

Muchas gracias, de todas maneras si me pudieras poner los ejemplos te lo agradecería, porque la verdad es que de los que tengo yo no me sale nada de nada.

Gracias de antemano!!
  #6 (permalink)  
Antiguo 04/09/2009, 20:53
Avatar de Slackin  
Fecha de Ingreso: noviembre-2007
Ubicación: Puerto Montt, Chile
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 4
Respuesta: Horarios

Este es un programita corto y conciso(tzymas.cpp):
Código:
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;


int  main()
{

   time_t tAct = time(NULL);
   cout << "Tiempo actual: " << asctime(localtime(&tAct));
   /*putenv("TZ=EST5EDT");*/
    putenv("TZ=GMT+9");
   tzset();
   cout << "Tiempo actual: " << asctime(localtime(&tAct));
   
   return 0;
   
}

El te muestra el tiempo actual, y depues con putenv cambia la zona horaria, y vuelve a imprimir la nueva hora.
Espero te sirva
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:44.