我有一个应用程序需要保存以下数据:开始时间+持续时间,其工作原理类似于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,但这可能超出了您的应用程序范围。