首页 > 解决方案 > 如何比较两个日期和时间并以分钟为单位计算差异。我正在尝试比较用户证书

问题描述

日期格式如下 0x7 0xE5 0x1 0x8 0x17 0x1E 0x23。这里第 0 个字节是年,最后一个字节是秒。我正在编写以下程序。如果日期是同一个月,我可以计算时间。我没有使用任何内置库

#include <stdio.h>

int main()
{
    enum DateTime_Param
    {
        year_byte1 = 2,
        year_byte2 = 3,
        mon = 7,
        day = 11,
        hour = 15,
        min = 19,
        sec = 23,
        num_bytes = 24
    };
    
    unsigned char validTo_Data[num_bytes]   = {0, 0, 0x7, 0xE5, 0, 0, 0, 0x1, 0, 0, 0, 0x8, 0, 0, 0, 0x17, 0, 0, 0, 0x1E, 0, 0, 0, 0x23};
    unsigned char validFrom_Data[num_bytes] = {0, 0, 0x7, 0xE5, 0, 0, 0, 0x1, 0, 0, 0, 0x8, 0, 0, 0, 0x15, 0, 0, 0, 0x3b, 0, 0, 0, 0x3b};

    
    unsigned int from_year_bytes;          
    unsigned int to_year_bytes;                 
    
    int fromMinutes, toMinutes, totalMinutes;

    from_year_bytes = ((validFrom_Data[year_byte1])<<8 | (validFrom_Data[year_byte2]));

    to_year_bytes = ((validTo_Data[year_byte1])<<8 | (validTo_Data[year_byte2]));
    
    if(from_year_bytes<to_year_bytes)
    {
        printf("Date_flag = E_C_OK1;\n");
    }
    else if(from_year_bytes==to_year_bytes)
    {
        if(validFrom_Data[mon]<validTo_Data[mon])
        {
            printf("Date_flag = E_C_OK2;\n");
        }
        else if(validFrom_Data[mon]==validTo_Data[mon])
        {
            if(validFrom_Data[day]<validTo_Data[day])
            {
                printf("Date_flag = E_C_OK3;\n");
            }
            else if(validFrom_Data[day]=validTo_Data[day])
            {
                fromMinutes = validFrom_Data[hour]*60 + validFrom_Data[min];
                toMinutes = validTo_Data[hour]*60 + validTo_Data[min];
                if(fromMinutes<toMinutes){
                    printf("Valid");
                }else{
                    printf("inValid");
                }
            } 
        }
    }
}

标签: clogic

解决方案


推荐阅读