如何使用 mfc 获取系统长日期?

Posted

技术标签:

【中文标题】如何使用 mfc 获取系统长日期?【英文标题】:How to get system long date using mfc? 【发布时间】:2019-10-11 07:50:45 【问题描述】:

我需要使用 MFC 获取系统当前的长日期。我的要求是我需要获得没有格式的系统长日期。例如:在我的系统中,如果日期设置为“dd/mm/yyyy”格式,那么我需要使用相同的格式。

假设在我的系统中,如果我将格式更改为“yyyy/mm/dd”,那么我需要获取我在系统中设置的输出。

我发现DATE_SHORTDATE 正在获取系统显示的日期,如果我使用DATE_LONGDATE,它将始终以“dd/mm/yyyy”格式获取系统日期

CString strValue;
SYSTEMTIME st;
CTime time = CTime::GetCurrentTime();
time.GetAsSystemTime(st);
GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &st, NULL, strValue.GetBufferSetLength(50), 50);

strValue.ReleaseBuffer();

请帮我解决这个要求。

【问题讨论】:

【参考方案1】:

您的代码返回正确的值,但是 LongDate 格式的某些语言环境不支持使用“mm”字符串。

在我的 Windows 10 1903(英语-美国语言环境)上,控制面板将“mm”值覆盖为“MM”。

,

更多关于 LongDatePattern 的参考:

https://docs.microsoft.com/en-us/dotnet/api/system.globalization.datetimeformatinfo.longdatepattern?view=netframework-4.8

【讨论】:

以上是关于如何使用 mfc 获取系统长日期?的主要内容,如果未能解决你的问题,请参考以下文章

MFC中的CTime类该怎么用

在c语言中如何获取当前日期?

MFC中的列表控件,当选择了多项时,如何对选中的数据进行操作?

显示当前时间

如何将字符串日期转换为长毫秒

如何使用控制台应用程序获取输出并将其显示到 MFC Dialog StaticText