Visual C++ .NET - Fecha y hora del sistema?

 
Vista:
Imágen de perfil de diana estrada

Fecha y hora del sistema?

Publicado por diana estrada (13 intervenciones) el 16/07/2008 02:27:34
hola , tengo un programa en C++ el cual tambien tengo en c++ .net 2005, mi duda es como puedo asignarle a una variable la fecha actual del sistema para hacer un calculo con otra fecha q tengo, pq tengo lo siguiqnte:
__________________________________________
time_t ahora;
time_t tiempoTotal ;

tiempo = localtime( &dxinfo[ channum ].tTimeStartTransfer );
time(&ahora);
tiempoTotal = ahora - dxinfo[ channum ].tTimeStartTransfer ;
______________________________________________

esto funciona , pero en ocaciones la variable "ahora" toma fecha 0, es decir 31 del 12 de 1969, entonces la diferencia ya no corresponde. Q podra ser?, o bien de q otra forma puedo tomar la fecha y hora actual para sacar la diferencia?
Espero su ayuda y de antemano muchas gracias!
Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener fecha y hora actual y calcular diferencia con otra fecha

Publicado por Alejandro (265 intervenciones) el 05/02/2024 20:17:12
Diana. para obtener la fecha y hora actual en C++ .NET 2005, puedes utilizar las funciones de la biblioteca `<ctime>` y `<iomanip>`. A continuación, te proporciono un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <ctime>
#include <iomanip>
 
int main() {
    // Obtener la fecha y hora actual
    std::time_t ahora = std::time(nullptr);
 
    // Convertir a una estructura de tiempo local
    std::tm tiempoActual = *std::localtime(&ahora);
 
    // Imprimir la fecha y hora actual
    std::cout << "Fecha y hora actual: "
              << std::put_time(&tiempoActual, "%Y-%m-%d %H:%M:%S") << std::endl;
 
    return 0;
}

En este ejemplo, `std::time(nullptr)` devuelve la cantidad de segundos desde el 1 de enero de 1970 (época UNIX) hasta la fecha y hora actuales. Luego, `std::localtime` se utiliza para convertir esta cantidad de segundos a una estructura de tiempo local (`std::tm`).

Para tu caso específico, puedes adaptar el código de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <ctime>
 
int main() {
    // Obtener la fecha y hora actual
    std::time_t ahora = std::time(nullptr);
 
    // Calcular la diferencia con otra fecha
    std::time_t otraFecha = dxinfo[channum].tTimeStartTransfer;
    std::time_t tiempoTotal = ahora - otraFecha;
 
    // Imprimir la diferencia en segundos
    std::cout << "Diferencia en segundos: " << tiempoTotal << std::endl;
 
    return 0;
}

Este código debería ayudarte a evitar problemas con la fecha "0" que mencionas. Asegúrate de que `dxinfo[channum].tTimeStartTransfer` sea una fecha válida y esté en el formato adecuado para evitar resultados inesperados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar