2011-08-02 33 views
8

He estado programando en VB.NET durante la mayor parte de mi carrera de programación. Tengo un proyecto de C++ para mí, que necesito hacer algunas modificaciones, y me siento perdido y confundido.C++ MFC Obtenga la fecha y hora actual

Es un proyecto Visual Studio 2008 MFC en C++.

una variable de salida se ha definido:

char szout[900]; 

Esta línea de abajo, se utiliza para añadir valores a la variable de salida antes de la salida:

strcpy(szout, "TextHere") 

Así que una de los muchos ejemplos de la búsqueda, que he intentado, era incluir en la parte superior:

#include <windows.h> 

Y luego para mi código:

SYSTEMTIME st; 
GetSystemTime(&st); 
char myDate[20] = st; 
CT2CA outputDate(myDate); 
strcat(szout, outputDate); 

Por alguna razón las variables adjuntas a szout deben ser del tipo CT2CA, que no estoy realmente seguro de lo que es esto ya sea.

Pero cuando me siento los siguientes errores en la segunda y tercera línea (myDate Char ... etc ...) y (salida CT2CA .... etc ....)

error C2440: 'initializing' : cannot convert from 'SYSTEMTIME' to 'char [20]' 

error C2664: 'ATL::CW2AEX<>::CW2AEX(LPCWSTR) throw(...)' : cannot convert parameter 1 from 'char [20]' to 'LPCWSTR' 

Así lo aclararé, soy un novato completo con esto, y agradecería cualquier y toda ayuda.

Gracias,

Respuesta

21

Si está utilizando MFC, por qué no:

// uses printf() format specifications for time 
CString t = CTime::GetCurrentTime().Format("%H:%M"); 

// Or, if you have OLE Support 
CString t = COleDateTime::GetCurrentTime().Format("%H:%M"); 
+0

Project construye sin error si no incluyo ninguna línea. La inclusión de la primera opción proporciona este error: error C2664: 'CString ATL :: CTime :: Formato (LPCTSTR) const': no ​​se puede convertir el parámetro 1 de 'const char [6]' a 'LPCTSTR' ------ incluyendo el la segunda opción proporciona este error: error C2664: 'CString ATL :: COleDateTime :: Formato (DWORD, LCID) const': no ​​se puede convertir el parámetro 1 de 'const char [6]' a 'DWORD' – Adam

+0

Además, si en cambio lo pongo. Formato (0, "% H:% M"); , se deshace del error de conversión DWORD ... pero luego genera un nuevo error para el parámetro 2, que no se puede convertir a LCID. – Adam

+0

Perdón por tantos comentarios = \ ... si elimino todos los parámetros del método .Format, compila bien. Pero aún me gustaría poder hacer el formato como lo has mostrado. – Adam

2

En MFC El código siguiente es para la fecha actual en formato MMDDAAAA.

CTime t = CTime::GetCurrentTime(); 
CString s = t.Format("%m%d%Y"); 
Cuestiones relacionadas