什么是理想的数据结构来处理像“请勿打扰”这样的应用程序的时间?

时间:2014-08-12 05:03:22

标签: c data-structures

我有一个需要保存以下数据的应用程序:开始时间+持续时间,类似于android / iOs上可用的免打扰(请勿打扰)服务。

用户可以指定开始时间和结束时间 作为开始时间2300小时和结束时间0700小时

我使用的是以下data_structure: -

typedef struct _timeOfDayDataStruct
{
    unsigned int start_time;    //to hold the start time e.g 2300
    unsigned int duration_mins; //to hold the duration in minutes e.g 8
} timeOfDayDataStruct;

它是理想的数据结构,还是我们能做得更好?

所需的操作是 1.设置start_time的值 2.检查给定时间是否在我们指定的时间间隔内?

1 个答案:

答案 0 :(得分:1)

以下两个问题可能会引起关注:

我还建议如下:

  • 为星期几添加其他字段
  • 转换并存储用户输入的时间作为第二个值,因为一周中的常量开始时间(例如,星期一00:00) - 这将使您的应用程序中的比较更容易(因为您可以使用基准参考进行任何比较)

类似的东西:

typedef struct _doNotDisturb {
    unsigned int startTime; // Stored as offset from your start of week
    unsigned int endTime; // Stored as offset from your start of week
    unsigned int day; // Stored as 24*3600 seconds from your start of week
} doNotDisturb;

然后您可以将时间与:

进行比较
if ((currentTime > (doNotDisturb.day + doNotDisturb.startTime)) && (currentTime < (doNotDisturb.day + doNotDisturb.endTime)) {
    // Do not disturb
}

currentTime将被引用回到您的周开始时间。

您也可以使用time_t代替您自己的引用时间,这样您就可以在特定日期提供DND,但这可能超出了您的应用范围。