我有时间格式,如下所示:
10:30-12:30,18:00-00:30 Mo-We,Th,Sa
和
Mo-Fr 08:00-13:30; Sa 08:00-12:30
有没有简单快捷的解析方法?我需要一个函数来比较这种格式的当前时间。
这是标准格式吗?
答案 0 :(得分:3)
不,这不是标准格式。我会尝试将您的问题分成几个关键部分:
1)数据存储:
由于问题仅限于一周中的几天,因此您可以为一周中的每一天创建一组tm structs对:
#include <time.h>
typedef tm interval[2];
typedef interval* daysofweek[7];
void main(void)
{
int number_of_intervals = 2; //this must be calculated for each day but to exemplify how you could store your data I initialised it to 2
interval *intervals;
intervals = (interval*)malloc(number_of_intervals);
daysofweek d;
d[0] = intervals; //you must set the intervals for each day
}
2)解析
您应该根据字符串的sintax定义一组规则。从您举例说明的两个字符串中,我将定义以下规则:
;
字符-
,:
和,
)的部分,分别为带字符的部分3)比较
填充数据结构后,您可以使用ctime中的比较函数解析它并推断您是否在某个区间内。
HTH, JP。
P.S。如果你使用C ++和STL而不是普通的C,那么任务会更容易。