c - 如何比较两个日期和时间并以分钟为单位计算差异。我正在尝试比较用户证书
问题描述
日期格式如下 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");
}
}
}
}
}
解决方案
推荐阅读
- javascript - 使用正则表达式将字符串中的两个 delemeter 拆分后获取中间部分
- asp.net - 通过 ajax 调用 webmethod 时发生 500 内部服务器错误。这仅在实时服务器中发生,在 localhost 中工作正常
- google-cloud-platform - FAILED_NOT_VISIBLE 负载平衡中由 Google 管理的 SSL 证书
- java - 有没有什么简单的方法可以在按下特定按钮后重新运行方法/程序?
- javascript - 将变量内插为组件模板的内联样式参数?
- pandas - 高效的 Dataframe 列(对象)到 DateTime 的转换
- gitlab-ci - 如何使用 lftp 删除除 cgi-bin 和 .ftpquota 之外的所有文件
- docker - CRIT Supervisor 以 root 身份运行(配置文件中没有用户)_将 sameersbn/gitlab 升级到最新版本
- firebase - 不能在颤动的火力基地中一起使用 Where 和 orderBy
- python - pyomo - 将权力包含在约束表达式中的困难