C语言 日期区间检测

需求大概是:

       检索设备录像文件,通过时间段检索,文件名以 前缀_日期_时间.mp4 为准

       分别提取 文件名里面的 年、月、日、时、分,再检测是否在某个时间段

附上检测部分,是否完善,待测

 969 #if 1
 970         // 计算文件时间 转换成秒
 971         // date -d "2010-10-18 00:00:00" +%s
 972         sprintf(str_sec, "date -d \"%d-%d-%d %d:%d:00\" +%%s", m_year, m_month, m_day, m_hour, m_minute);
 973         //trace("str_sec: %s", str_sec);
 974         if ((ptr = popen(str_sec, "r")) != NULL) {
 975                 if (!fread(result, sizeof(char), sizeof(result), ptr)) {
 976                         trace("fread %s failed", str_sec);
 977                         return 0;
 978                 }
 979
 980         } else {
 981                 trace("popen %s failed", str_sec);
 982                 return 0;
 983         }
 984         diff = atol(result);
 985
 986         // ceiling 转换成秒
 987         memset(str_sec, 0, sizeof(str_sec));
 988         memset(result, 0, sizeof(result));
 989         sprintf(str_sec, "date -d \"%d-%d-%d %d:%d:00\" +%%s", ceiling.u32Year, ceiling.u32Month, ceiling.u32Day, ceiling.u32Hour, ceiling.u32Minute);
 990         if ((ptr = popen(str_sec, "r")) != NULL) {
 991                 if (!fread(result, sizeof(char), sizeof(result), ptr)) {
 992                         trace("fread %s failed", str_sec);
 993                         return 0;
 994                 }
 995
 996         } else {
 997                 trace("popen %s failed", str_sec);
 998                 return 0;
 999         }
1000         m_ceiling = atol(result);
1001
1002         // floor 转换成秒
1003         memset(str_sec, 0, sizeof(str_sec));
1004         memset(result, 0, sizeof(result));
1005         sprintf(str_sec, "date -d \"%d-%d-%d %d:%d:00\" +%%s", floor.u32Year, floor.u32Month, floor.u32Day, floor.u32Hour, floor.u32Minute);
1006         if ((ptr = popen(str_sec, "r")) != NULL) {
1007                 if (!fread(result, sizeof(char), sizeof(result), ptr)) {
1008                         trace("fread %s failed", str_sec);
1009                         return 0;
1010                 }
1011
1012         } else {
1013                 trace("popen %s failed", str_sec);
1014                 return 0;
1015         }
1016         m_floor = atol(result);
1017
1018         if (diff >= m_ceiling && diff <= m_floor) {
1019                 return 1;
1020         } else {
1021                 return 0;
1022         }
1023 #endif
发布了112 篇原创文章 · 获赞 56 · 访问量 36万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章