我正在尝试在MSVC ++ 6.0编译器上的C程序中获取系统日期。我正在使用系统调用:
系统(“日期/ T”)(输出是例如2008年10月13日,这是我系统上的日期,我已设置的格式)
但是这会将日期输出到I / O控制台。
如何使上述系统调用返回此日期并将其作为字符串值存储到我的代码中定义的字符串? 或者
我是否可以使用其他API来获取上述格式的日期(2008年10月13日或13-10-08)?
-AD
答案 0 :(得分:1)
#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;
}
}
答案 1 :(得分:0)
使用API函数有两种方法可以做到这一点,我想到的两个方法是strftime和GetDateFormat。
我想提供示例,但我担心目前还没有Win32编译器。希望上述文档中的示例足够。
答案 2 :(得分:0)
阅读Win32 Time functions; GetLocalTime可能是你的朋友。还有标准的C时间函数,时间和strftime。
为了将来参考,在C程序中,调用外部实用程序并捕获它的STDOUT几乎总是错误的答案。
答案 3 :(得分:0)
感谢指点。
我用过这个,它符合我的目的:
#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 );
}
-AD