通过当前日期获取周初、月初、月末日期

来源:互联网 发布:最优化理论与算法ppt 编辑:程序博客网 时间:2024/05/18 02:37

废话不多说,进入正题。

首先介绍2个函数time localtime

一、函数time简介

time_t   time(time_t  *timer);

【功    能】获取当前系统时间 

【参    数】*timer用来指向存储返回值的变量,若为NULL,不存储。

【返回值】1970年1月1日0:0:0到当前时间的秒数      


二、函数localtime简介

struct   tm  *localtime(const time_t *timer);

【功    能】将秒数转换成当前日期(ps:日期用结构体tm表示)

【返回值】对应日期的tm结构体

【注:】
tm_sec 

Seconds after minute (0 – 59).

tm_min

Minutes after hour (0 – 59).

tm_hour

Hours after midnight (0 – 23).

tm_mday

Day of month (1 – 31).

tm_mon

Month (0 – 11; January = 0).

tm_year

Year (current year minus 1900).

tm_wday

Day of week (0 – 6; Sunday = 0).

tm_yday

Day of year (0 – 365; January 1 = 0).

tm_isdst

Positive value if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative value if status of daylight saving time is unknown. If theTZ environment variable is set, the C run-time library assumes rules appropriate to the United States for implementing the calculation of daylight-saving time (DST).

下面给出一个通过当前日期获取本月初、月末日期的例子

【思路】1、获取当期日期(例如目前为2013-6-4)

                2、获取1970-1-1到当前时间的秒数(long_time)

                3、计算1970-1-1至月初的秒数(long_time - 天数[4]*24*60*60)

                4、计算1970-1-1至月末的秒数(当前秒数+1天的秒数 → 将秒数转换为日期→判断此日期是否为1→求出至月末的秒数→转换为日期)

time_t firsttime;         //至本月初秒数time_t lasttime;          //至本月末秒数time_t long_time;int     daynum;                     //日期tm*   first_Time;                 //本月初时间tm*   last_Time;                 //本月末时间SYSTEMTIME sys;             //当前时间(有多种方法可以获取当前时间,看实际需要吧)GetLocalTime(&sys);daynum = sys.wDay;time(&long_time);firsttime = long_time - (daynum-1)*24*60*60;  first_Time = localtime(&firsttime);lasttime = long_time + 24*60*60;last_Time = localtime(&lasttime);while(1 != last_Time->tm_mday){        lasttime = lasttime + 24*60*60;        last_Time = localtime(&lasttime);}lasttime = lasttime - 24*60*60;  last_Time = localtime(&lasttime);

如果大家有更好的思路,欢迎讨论。。。