C语言取现行时间

该博客详细介绍了如何使用C++将时间戳转换为日期,包括闰年的判断和天数偏移转日期的函数。代码中定义了基础年、月、日、时、分、秒,并提供了一个inline函数leap()来判断是否为闰年,以及int2date()函数将天数偏移转换为具体日期。最后展示了timestamp()函数,将时间戳转换为完整日期和时间的打印格式。
摘要由CSDN通过智能技术生成
int baseYear = 1970;
int baseMon = 1;
int baseDay = 1;
int baseHour = 0;
int baseMin = 0;
int baseSec = 0;
int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
//判闰年
inline int leap(unsigned year)
{
    return (year%4==0&&year%100!=0)||year%400==0;
}
//天数偏移转日期
void int2date(unsigned a,unsigned *year,unsigned *month,unsigned *day)
{
    *year = a/146097*400 + baseYear;
    for(a%=146097; a>=365+leap(*year); a-=365+leap(*year),(*year)++);
    days[1] += leap(*year);
    for(*month=1; a>=days[*month-1]; a-=days[*month-1],(*month)++);
    days[1]=28;
    *day=a+1;
}
void timestamp(unsigned n)
{
    unsigned year,mon,day,hour,min,sec = (baseSec+n%60)%60;
    n = n/60+(baseSec+n%60)/60;
    min = (baseMin+n%60)%60;
    n = n/60+(baseMin+n%60)/60;
    hour = (baseHour+n%24)%24;
    n = n/24+(baseHour+n%24)/24;
    int2date(n,&year,&mon,&day);
    printf("%u-%u-%u %u:%02u:%02u\n",year,mon,day,hour,min,sec);
}

转载:
https://blog.csdn.net/qq_25367755/article/details/51221937

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值