所有
我对C++还很陌生。
这是我的密码。
#include <winnls.h>
#include <winnt.h>
SYSTEMTIME create_local_time;
GetDateFormat( LOCALE_USER_DEFAULT, DATE_SHORTDATE, &create_local_time, NULL, m_szCreationTime.GetBuffer(128), 128);
我正在查看中的GetDateFormat函数http://msdn.microsoft.com/en-us/library/windows/desktop/dd318086(v=vs.85(.aspx.
m_szCreationTime以字符串形式返回我的日期,如2013-03-09。
我想将此格式更改为2013/03/09。
因此,我正在查看我给DATE_SHORTDATE的DWORD dwFlags。
但是,我仍然找不到我想要的信息。
有人能帮我一把吗?
编辑
对不起,我真的错过了非常重要的部分。
m_szCreationTime是CString类型。
解决方案1
您可以将第四个参数format
设置为"yyyy/mm/dd"
,而不是NULL
,但第二个参数dwFlags
必须设置为0
,因为:
指定在lpFormat设置为NULL时可以设置的各种函数选项的标志。
这里我们需要设置format
参数,所以我们不能将dwFlags
设置为NULL
。您可以参考MSDN中的文档,了解此API的更多信息:
SYSTEMTIME create_local_time;
TCHAR time[128] = {0};
const TCHAR *format = _T("yyyy/MM/dd");
GetLocalTime(&create_local_time);
GetDateFormat( LOCALE_USER_DEFAULT, 0, &create_local_time, format, time, 128);
上面的代码片段可以获得所需格式的时间。
解决方案2
您也可以在获得字符串后将-
替换为/
,例如
#include <algorithm>
#include <string>
void some_func() {
std::string s = "2013-03-09";
std::replace( s.begin(), s.end(), '-', '/'); // replace all '-' to '/'
}
如果字符串是CString
类型,则更简单:
szCreationTime .Replace('-', '/');
请参阅MSDN此处的
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = "2013-03-09";
replace( s.begin(), s.end(), '-', '/' );
cout << s << endl;
return 0;
}