Fileheader 2.0.2 | times.h
times.h 提供了查询系统时间的通用方法
class::times
你可以通过声明一个 class::times 变量来调用查询系统时间
times a;
cout<<a.year(); //2024
times 返回的任何数据都是 std::string 类型的,你可以利用 hdk::tool::to_number(std::string) [tool.h] 来将其转为数字类型
下面是 times 的所有可调用方法
times_t short_weekname() 例: Mon
times_t weekname() 例: Monday
times_t short_monthname() 例: Nov
times_t monthname() 例:April
times_t date_and_time() 根据系统设置变化
times_t date_of_month() 返回日期,如 11 月 7 日时返回 7
times_t hours_24() 返回二十四小时制下小时数
times_t hours_12() 返回十二小时制下小时数
times_t date_of_year() 返回今天是本年第几天
times_t month() 返回此月是本年第几月
times_t minute() 返回分钟
times_t times_12() 返回 “PM“ “AM“ 的其中之一
times_t second() 返回秒数
times_t date_of_week() 返回今天是本周第几天
times_t week_of_year() 返回本周是本年第几周
times_t week_of_year_start_from_sunday() 同上,星期以星期日开始
times_t date() 返回日期
times_t time() 返回时间 时/分/秒
times_t short_year() 返回年份后两位
times_t year() 返回年份
times_t short_time_zone() 返回时区,形如 +0800
times_t time_zone() 返回时区,形如 CST
此外,times 外置了 std::strftime 接口,你可以自行寻找 std::strftime 的格式控制符,借助它你可以实现自定义返回内容
接口名称为
std::string get_format(std::string x)
其中 x 是传入的格式控制符
class times_table
times_table 是一个时间表类,支持存储时间表,查询特定时刻所处活动内容
声明时需要构造函数,定义后不支持修改
构造函数为
times_table(const vector<time_area>&x)
其中 time_area 是 class::time_table 下一个类型,含有活动名称,起始时间,结束时间等
time_area 提供了如下构造函数
time_area(const string a,const hm_times_t b,const hm_times_t c);
其中 a 为名称,b 为起始时间,c 为结束时间
hm_times_t 可以使用形如 (int,int) (pair<int,int>) (int(,0)) 的任意一种方式构造,其中第一个参数为时,第二个参数为分钟
time_area(const string a,int b,int c,int d,int e);
其中 a 为名称,b,c 为起始时间的时,分,c,d 为结束时间的时,分
对于查询,times_table 提供了 operator []
const string operator[](const hm_times_t x);
关于 hm_times_t 的构造方式详见上文
该函数调用后会寻找所在活动,并返回一个带有活动名称,活动详细信息的字符串
否则会返回 “No activity”
下面实现了一个对机房内作息表的实时活动查询程序
仅下载该程序与必需头文件
Only for Linux
UPD: 更新成了实时显示的
在 Linux 下你可以通过挂一个终端并置顶来实时显示时间
Windows 下我翻到了弹窗的 API 接口,但考虑到 Windows 有闹钟功能,很可能用不到我这个,遂没写
ps: 时间是从题库上扒下来的旧时间表,和实际的铃有点出入,并且两个机房的铃也不一样,你可能需要自己调整一下,大概明天我会发一份 504 的正确时间版本
#include<bits/stdc++.h>
using namespace std;
#include"include/hdk/times.h"
#include"include/hdk/tool.h"
using namespace hdk;
using namespace hdk::tool;
int main(){
_time s;
times_table day(
{
{"晚休", 0, 0, 5,59},
{"早操", 6, 0, 6,14},
{"早读", 6,15, 7, 0},
{"早饭", 7, 0, 7,24},
{"上午第一节", 7,25, 8,24},
{"讨论", 8,25, 8,44},
{"上午第二节", 8,45, 9,44},
{"讨论", 9,45, 10, 4},
{"上午第三节",10, 5, 11, 4},
{"讨论", 11, 5, 11,24},
{"上午第四节",11,25, 12,14},
{"午休", 12,15, 13,59},
{"下午第一节",14, 0, 14,49},
{"讨论", 14,50, 15, 9},
{"下午第二节",15,10, 16, 9},
{"讨论", 16,10, 16,29},
{"下午第三节",16,30, 17,29},
{"讨论", 17,30, 17,44},
{"下午第四节",17,45, 18,19},
{"晚饭", 18,20, 18,34},
{"讨论", 18,35, 18,54},
{"晚间第一节",18,55, 20, 9},
{"讨论", 20,10, 20,29},
{"晚间第二节",20,30, 21,39},
{"晚休", 21,40, 23,59}
}
);
times a;
cout<<"Time: "<<a.date()<<" "<<a.hours_24()<<":"<<a.minute()<<":"<<a.second()<<endl;
cout<<"Now "<<day[{(int)to_number(a.hours_24()),(int)to_number(a.minute())}]<<endl;
while(1){
s.sleep(1 time_s);
#if RAND_MAX==INT_MAX
system("clear");
#else
system("cls");
#endif
cout<<"Time: "<<a.date()<<" "<<a.hours_24()<<":"<<a.minute()<<":"<<a.second()<<endl;
cout<<"Now "<<day[{(int)to_number(a.hours_24()),(int)to_number(a.minute())}]<<endl;
}
}