如何在C++中将日期时间格式从yyyy-MM-dd转换为yyyy/MM/dd



所有

我对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;
}

相关内容

  • 没有找到相关文章

最新更新