最简单的C语言判断日期合法性函数

本文分享了一个简洁的日期合法性检查函数,能够准确判断日期是否有效,包括闰年的处理。通过一系列测试案例验证了函数的准确性。

最近整理了一个判断日期合法性的函数,比较简洁,供大家参考,欢迎批评指正。

bool Check_date(short w_year,char w_month,char w_date)
{
    char Month_buf[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };               //月份修正表

    if (w_month==2)                                                             //闰年2月+1天
        (((w_year%4==0)&&(w_year%100!=0))||(w_year%400==0))?Month_buf[1]+=1:Month_buf[1];

    if (w_month>12||w_month<1||w_date>Month_buf[w_month-1]||w_date<1)           //判断月份日期是否合法
        return false;

    return true;
}

下面是一个小测试;


typedef struct
{
    short year;
    char  month;
    char  date;
}_Date;


_Date _date[8] =
{
    2000,2,29,
    1900,2,29,
    2019,6,15,
    2019,13,15,
    2019,6,0,
    2019,0,5,
    2019,6,31,
    2019,7,31,
};

int main()
{
    for (int i = 0; i < 8; i++)
    {
        printf("%d-%d-%d\r\n", _date[i].year, _date[i].month, _date[i].date);

        if (Check_date(_date[i].year, _date[i].month, _date[i].date) == true)
            printf("该日期正确!\r\n");
        else
            printf("该日期错误!\r\n");
    }

    return 0;
}

运行结果如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值