解析时间段

时间:2011-08-26 07:40:08

标签: c

我有时间格式,如下所示:

10:30-12:30,18:00-00:30 Mo-We,Th,Sa

Mo-Fr 08:00-13:30; Sa 08:00-12:30

有没有简单快捷的解析方法?我需要一个函数来比较这种格式的当前时间。

这是标准格式吗?

1 个答案:

答案 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定义一组规则。从您举例说明的两个字符串中,我将定义以下规则:

  • 根据;字符
  • 分割和处理所有字符串
  • 将结果字符串拆分为带有数字(加-:,)的部分,分别为带字符的部分
  • 使用数字解析零件并创建时间间隔
  • 使用字符解析部分并填充每天的数组,跟踪所有日期,以便您可以0秒间隔初始化剩余天数

3)比较

填充数据结构后,您可以使用ctime中的比较函数解析它并推断您是否在某个区间内。

HTH, JP。

P.S。如果你使用C ++和STL而不是普通的C,那么任务会更容易。