您的位置:首页 > 编程语言 > C语言/C++

C语言 日期区间检测

2015-06-29 20:09 344 查看
需求大概是:

       检索设备录像文件,通过时间段检索,文件名以 前缀_日期_时间.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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: