C语言 什么应该是理想的数据结构来处理时间的应用程序,如不打扰



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

用户可以指定开始时间和结束时间以2300 HRS为起始时间,0700 HRS为结束时间

我使用了以下数据结构:-

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. 检查一天中给定的时间是否在我们指定的间隔内?

您可能对前面的两个问题感兴趣:

  • 比较两个时间值
  • C: Validation in strptime

我还建议如下:

  • 为星期几添加额外字段
  • 将用户输入的时间转换并存储为一周中固定开始时间(例如,星期一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,但这可能超出了您的应用程序范围。

最新更新