输出某年某月某日某时某分某秒的下一秒的时间:年、月、时、分、秒

利用C++语言实现日期时间增加一秒的结果:


#include <iostream>
#include <string>

using namespace std;

int  ResetTheTime( int *year, int *month, int *day, int *hour, int *minute, int *second );


int main( int argc, char const *argv[] )
{
    int year   = 2014;
    int month  = 12;
    int day    = 31;
    int hour   = 23;
    int minute = 59;
    int second = 59;

    cout << year << ' ' << month << ' ' << day << ' ' << hour << ' ' << minute << ' '<< second <<endl;
    ResetTheTime( &year, &month, &day, &hour, &minute, &second );

    return 0;
}
int ResetTheTime( int *year, int *month, int *day, int *hour, int *minute, int *second )
{
    // set all months in int_array 
    static int DayOfMonth[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

    // error hander 
    if ( *year < 0 || *month < 1 || *month > 12 || *day < 1 || *day >31 || *hour < 0 || *hour >=24 || *minute < 0 || *minute > 59 || *second < 0 || *second > 59)
    {
        printf("%s\n", "data error");
        exit ( -1 );
    }

    // error  
    if ( *year < 0 || *month < 1 || *month > 12 )
    {
        printf( "%s\n", "month error" );
        exit ( -2 );
    }
    // leap year 
    if ( *year % 400 ==0 || *year % 100 != 0 && *year %4 == 0)
            DayOfMonth[1] = 29;

    *second += 1 ;
    if ( *second >= 60 )
    {
        *second =  0;
        *minute += 1;

        if( *minute >= 60 )
        {
            *minute = 0;
            *hour += 1;

            if ( *hour >= 24 )
            {
                *hour = 0;
                *day += 1 ;

                if( *day > DayOfMonth[ *month - 1 ] )
                {
                    *day    = 1;
                    *month += 1;

                    if( *month > 12 )
                    {
                        *month = 1;
                        *year += 1;
                    }

                }
            }
        }
    }
    cout << *year << ' ' << *month << ' ' << *day << ' ' << *hour << ' ' << *minute << ' '<< *second <<endl;

    return 0 ;
}

值得注意的是:

1 . 利用函数实现该功能,屏蔽具体的实现细节,为主函数main提供简洁的接口,利于代码移植。

2 . 实现日期增加一秒的函数有以下注意事项:

i . 实现之前,先进行错误处理:不符合客观事实的输入直接返回有意义的字符串,使得函数退出。

ii . 需要判断年份是否是 闰年 (leap year) 它的特点是:二月为二十九日 ;相反 平年 只有28 天。

iii . 关注客观事实,比如:一分钟等于 60 秒,当秒数大于 59 时,分钟必须增加 1 ,以此类推。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值