2011-08-02 155 views
8

我一直在VB.NET中進行編程,以完成大部分編程事業。我有一個C++項目提供給我,我需要做一些修改,並且我感到無望地迷失和困惑。C++ MFC獲取當前日期和時間

它是C++中的Visual Studio 2008 MFC項目。

輸出變量被定義爲:

char szout[900]; 

下面這條線,用於輸出之前要追加值到輸出變量:

strcpy(szout, "TextHere") 

所以之一搜索中的很多例子,我曾嘗試過,包括頂部:

#include <windows.h> 

然後我的代碼:

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

出於某種原因,附加上szout變量的類型必須爲CT2CA,我真的不知道這是什麼無論是。

但後來我上二,三線(焦指明MyDate ...等...),並以下錯誤(CT2CA輸出....等....)

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' 

所以我會澄清,我是一個完整的新手,並會很感激任何和所有的幫助。

謝謝

回答

21

如果您正在使用MFC,爲什麼不:

// 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

如果我不包括任何一行,項目的建立沒有錯誤。包括第一個選項給出此錯誤:錯誤C2664:'CString ATL :: CTime :: Format(LPCTSTR)const':無法將參數1從'const char [6]'轉換爲'LPCTSTR' - 包括第二個選項給出此錯誤:錯誤C2664:'CString ATL :: COleDateTime :: Format(DWORD,LCID)const':無法將參數1從'const char [6]'轉換爲'DWORD' – Adam

+0

此外,如果我放。格式(0,「%H:%M」); ,它擺脫了DWORD轉換錯誤..但是然後爲參數2產生一個新的錯誤,它不能轉換爲LCID。 – Adam

+0

對不起,這麼多評論= \ ...如果我從.Format方法中刪除所有參數,然後它編譯好吧。但是我仍然希望能夠像你所顯示的那樣進行格式化。 – Adam

2

在MFC下面的代碼是在MMDDYYYY格式的當前日期。

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