#include1.2 struct tm结构体的成员说明和取值范围#include int main() { //获取系统时间,精确到秒 struct tm sysTm; time_t tm = time(0); char showTm[100] = { 0 }; localtime_s(&sysTm, &tm); //格式化当前时间点到字符数组中 sprintf_s(showTm,99,"%04d-%02d-%02d %02d:%02d:%02d", sysTm.tm_year + 1900, sysTm.tm_mon + 1, sysTm.tm_mday , sysTm.tm_hour, sysTm.tm_min, sysTm.tm_sec); //打印当前时间点,,精确到秒 printf("%sn",showTm); //打印当前时间点的详细说明 printf("年:%dn", sysTm.tm_year + 1900); printf("月:%dn", sysTm.tm_mon + 1); printf("日:%dn", sysTm.tm_mday); printf("一周中的第几天:%dn", sysTm.tm_wday); printf("一年中的第几天:%dn", sysTm.tm_yday); printf("时:%dn", sysTm.tm_hour); printf("分:%dn", sysTm.tm_min); printf("秒:%dn", sysTm.tm_sec); return 0; }
struct tm
{
int tm_sec; // seconds after the minute - [0, 60] including leap second
int tm_min; // minutes after the hour - [0, 59]
int tm_hour; // hours since midnight - [0, 23]
int tm_mday; // day of the month - [1, 31]
int tm_mon; // months since January - [0, 11]
int tm_year; // years since 1900
int tm_wday; // days since Sunday - [0, 6]
int tm_yday; // days since January 1 - [0, 365]
int tm_isdst; // daylight savings time flag
};
1.3 优缺点
缺点
只能精确到秒,无法获取毫秒数
优点
可以直接获得当前日期是一年中的第几天,和是星期几
2.方法2 2.1 示例代码#include#include #include //SYSTEMTIME头文件 int main() { //获取系统时间,精确到毫秒 SYSTEMTIME sysTm; GetLocalTime(&sysTm); char bufTime[100] = { 0 }; sprintf_s(bufTime, 99, "%04d-%02d-%02d %02d:%02d:%02d.%03d", sysTm.wYear, sysTm.wMonth, sysTm.wDay , sysTm.wHour, sysTm.wMinute, sysTm.wSecond, sysTm.wMilliseconds); printf("%sn",bufTime); //打印当前时间点的详细说明 printf("年:%dn", sysTm.wYear); printf("月:%dn", sysTm.wMonth); printf("日:%dn", sysTm.wDay); printf("一周中的第几天:%dn", sysTm.wDayOfWeek); printf("时:%dn", sysTm.wHour); printf("分:%dn", sysTm.wMinute); printf("秒:%dn", sysTm.wSecond); printf("毫秒:%dn", sysTm.wMilliseconds); return 0; }
2.2 struct SYSTEMTIME结构体说明
typedef struct _SYSTEMTIME {
WORD wYear;//年
WORD wMonth;//月
WORD wDayOfWeek;//星期几
WORD wDay;//日
WORD wHour;//小时
WORD wMinute;//分
WORD wSecond;//秒
WORD wMilliseconds;//毫秒
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
2.3 优缺点
缺点
不能跨平台,需包含Windows头文件
优点
可以获取到毫秒,写法比较简单易理解
3.封装成函数进行调用#include#include #include //SYSTEMTIME头文件 char* GetDate() { //获取系统时间,精确到毫秒 SYSTEMTIME sysTm; GetLocalTime(&sysTm); char bufTime[100] = { 0 }; sprintf_s(bufTime, 99, "%04d-%02d-%02d", sysTm.wYear, sysTm.wMonth, sysTm.wDay); return bufTime; } char* GetDateTime() { //获取系统时间,精确到毫秒 SYSTEMTIME sysTm; GetLocalTime(&sysTm); char bufTime[100] = { 0 }; sprintf_s(bufTime, 99, "%04d-%02d-%02d %02d:%02d:%02d.%03d", sysTm.wYear, sysTm.wMonth, sysTm.wDay , sysTm.wHour, sysTm.wMinute, sysTm.wSecond, sysTm.wMilliseconds); return bufTime; } int main() { char buf1[100] = { 0 }; strcpy_s(buf1, GetDate()); printf("%sn", buf1); char buf2[100] = {0}; strcpy_s(buf2,GetDateTime()); printf("%sn",buf2); return 0; }



