我正在尝试在 MSVC++ 6.0 编译器上的 C 程序中获取系统日期。我正在使用系统调用:
system("date /T") (输出例如 08 年 10 月 13 日,这是我系统上的日期,采用我设置的格式)
但这会将日期打印到 i/o 控制台。
我如何将上述系统调用返回的日期作为字符串值存储到我的代码中定义的字符串中?或者
是否有任何其他 API 可以用来获取上述格式的日期(08 年 13 月 8 日或 08 年 13 月 10 日)?
-广告
#include <windows.h>
#include <iostream>
int main() {
SYSTEMTIME systmDateTime = {};
::GetLocalTime(&systmDateTime);
wchar_t wszDate[64] = {};
int const result = ::GetDateFormatW(
LOCALE_USER_DEFAULT, DATE_SHORTDATE,
&systmDateTime, 0, wszDate, _countof(wszDate));
if (result) {
std::wcout << wszDate;
}
}
使用 API 函数有几种方法可以做到这一点,其中有两种方法是strftime和GetDateFormat。
我想提供一些示例,但恐怕我目前手边没有 Win32 编译器。希望上述文档中的示例就足够了。
阅读Win32 Time 函数;GetLocalTime 可能是你的朋友。还有标准的 C 时间函数 time 和 strftime。
为了将来参考,在 C 程序中,调用外部实用程序并捕获它的 STDOUT 几乎总是错误的答案。
感谢您的指点。
我使用了它,它达到了我的目的:
#include <time.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <string.h>
int main()
{
char tmpbuf[128];
time_t ltime;
struct tm *today;
_strdate( tmpbuf );
printf("\n before formatting date is %s",tmpbuf);
time(<ime);
today = localtime( <ime );
strftime(tmpbuf,128,"%d-%m-%y",today);
printf( "\nafter formatting date is %s\n", tmpbuf );
}
-广告