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

废话不多说,进入正题。

首先介绍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);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值