C++ windows下 获取当前系统日期数据的几种方法

上部分 获取日期数据
第一种 包含头文件 windows.h
涉及结构体

typedef struct _SYSTEMTIME {
    WORD wYear;//年
    WORD wMonth;//月
    WORD wDayOfWeek;//星期 取值范围0-6 0代表星期日
    WORD wDay;//日
    WORD wHour;//时
    WORD wMinute;//分
    WORD wSecond;//秒
    WORD wMilliseconds;//毫秒
  } SYSTEMTIME;

代码示例

#include "stdafx.h"
#include 
#include 
using namespace std;
int main()
{
	SYSTEMTIME timenow;
	GetLocalTime(&timenow);
	printf("%04d年 %02d月 %02d日 %02d时 %02d分 %02d秒 今天是星期%d",daystudy,timenow.wMonth, timenow.wDay,timenow.wHour,timenow.wMinute,timenow.wSecond,timenow.wDayOfWeek);
	return 0;
}

第二种
time_t,time():C标准库(精确到秒)
包含头文件 time.h
涉及结构体

struct tm { 
          int tm_sec;       /* 秒 – 取值区间为[0,59] */ 
          int tm_min;       /* 分 - 取值区间为[0,59] */ 
          int tm_hour;      /* 时 - 取值区间为[0,23] */ 
          int tm_mday;      /* 一个月中的日期 - 取值区间为[1,31] */ 
          int tm_mon;       /* 月份**(从一月开始,0代表一月) - 取值区间为[0,11]** */ 
          int tm_year;      /* 年份,其值等于**实际年份减去1900** */ 
          int tm_wday;      /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */ 
          int tm_yday;      /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */ 
          int tm_isdst;     /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ 
          }; 

代码示例

#include "stdafx.h"
#include 

int main()
{
	struct tm * tm;//赋值结构体名称 tm
	time_t t;//得到从1970年1月1日到目前的秒数 t
	t = time(NULL);
	tm=localtime(&t);
	printf("现在系统时间为 %d年 %d月 %d日 %d时 %d分 %d秒\n今天是 %d年 第%d天 星期%d",tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,tm->tm_year+1900,tm->tm_yday,tm->tm_wday);
	system("pause");
	return 0;
}

第三种
涉及头文件 time.h
涉及结构体
time_t
涉及函数
time()

示例

time_t time(time_t *timer)//得到从标准计时点(一般是1970年1月1日午夜)到当前时间的秒数 
double difftime(time_t timer1,time_t timer0);//计算时间差

格式化的字符串

%a 星期几的缩写。Eg:Tue 
%A 星期几的全名。 Eg: Tuesday 
%b 月份名称的缩写。 
%B 月份名称的全名。 
%c 本地端日期时间较佳表示字符串。 
%d 用数字表示本月的第几天 (范围为 0031)。日期 
%H 用 24 小时制数字表示小时数 (范围为 0023)%I 用 12 小时制数字表示小时数 (范围为 0112)%j 以数字表示当年度的第几天 (范围为 001366)%m 月份的数字 (范围由 112)%M 分钟。 
%p 以 ''AM''''PM'' 表示本地端时间。 
%S 秒数。 
%U 数字表示为本年度的第几周,第一个星期由第一个周日开始。 
%W 数字表示为本年度的第几周,第一个星期由第一个周一开始。 
%w 用数字表示本周的第几天 ( 0 为周日)%x 不含时间的日期表示法。 
%X 不含日期的时间表示法。 Eg: 15:26:30 
%y 二位数字表示年份 (范围由 0099)%Y 完整的年份数字表示,即四位数。 Eg:2008 
%Z(%z) 时区或名称缩写。Eg:中国标准时间 
%% % 字符

下部分 计算时间差值
第一种
计算月日时分秒格式两个时间的差值
使用CTimeSpan类,具体使用方法如下:

CTime t1( 1999, 3, 19, 22, 15, 0 );
CTime t = CTime::GetCurrentTime();
CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔
int iDay=span.GetDays(); //获取这段时间间隔共有多少天
int iHour=span.GetTotalHours(); //获取总共有多少小时
int iMin=span.GetTotalMinutes();//获取总共有多少分钟
int iSec=span.GetTotalSeconds();//获取总共有多少秒

第二种

time_t,time():C标准库(精确到秒)

time_t time(time_t *timer)//得到从标准计时点(一般是1970年1月1日午夜)到当前时间的秒数 
double difftime(time_t timer1,time_t timer0);//计算时间差

参考文章
https://blog.csdn.net/wuxiaoyao12/article/details/40372815#
https://blog.csdn.net/bao_bei/article/details/50617505

你可能感兴趣的:(c++)