Fileheader 2.0.2 | times.h

Download

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;
    }
}
posted @ 2024-11-07 18:02  HaneDaniko  阅读(26)  评论(2编辑  收藏  举报