C++ MFC获取当前日期和时间

Ada*_*dam 9 c++ time mfc date

在我的编程生涯中,我一直在用VB.NET编程.我有一个C++项目提供给我,我需要做一些修改,我感到绝望的迷失和困惑.

它是C++中的Visual Studio 2008 MFC项目.

已定义输出变量:

char szout[900];
Run Code Online (Sandbox Code Playgroud)

下面这一行用于在输出之前将值附加到输出变量:

strcpy(szout, "TextHere")
Run Code Online (Sandbox Code Playgroud)

因此,我尝试过的搜索中的众多示例之一就是包含在顶部:

#include <windows.h>
Run Code Online (Sandbox Code Playgroud)

然后为我的代码:

SYSTEMTIME st;
GetSystemTime(&st);
char myDate[20] = st;
CT2CA outputDate(myDate);
strcat(szout, outputDate);
Run Code Online (Sandbox Code Playgroud)

由于某种原因,附加在szout上的变量必须是CT2CA类型,我不确定这是什么.

但是后来我在第二和第三行得到了以下错误(char 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'
Run Code Online (Sandbox Code Playgroud)

所以我会澄清,我是一个完整的新手,并会感谢任何和所有的帮助.

谢谢,

Cha*_*had 24

如果您使用的是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");
Run Code Online (Sandbox Code Playgroud)

  • @Adam`LPCTSTR`转换为*"指向Tchars的恒定字符串的长指针"*,这意味着你处于Windows Unicode领域.将它更改为`.Format(L"%H:%M")`可能只是为你修复它,但我自己从来没有真正理解这类事情的最佳实践.这可能会有所启发:http://www.codeproject.com/KB/string/cppstringguide2.aspx (3认同)

Pab*_*ash 7

在 MFC 中,以下代码用于 MMDDYYYY 格式的当前日期。

CTime t = CTime::GetCurrentTime();
CString s = t.Format("%m%d%Y");
Run Code Online (Sandbox Code Playgroud)