您当前的位置: 首页 >  c++

鱼儿-1226

暂无认证

  • 0浏览

    0关注

    1100博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++ – 在某一天某个时间点定时执行任务,比如2022年9月19日晚上9点准点执行发送邮件函数

鱼儿-1226 发布时间:2022-10-13 15:50:20 ,浏览量:0

1 根据设定的指定时间获取时间戳

这里转换时间为时间戳,我们用到的是C中mktime函数

1.1 mktime函数

函数形式

time_t mktime(struct tm *timeptr)

C++

Copy

函数功能

把 timeptr所指向的结构转换为一个依据本地时区的自 1970 年 1 月 1 日以来持续时间的秒数,如果转换错误则返回-1。

函数参数

  • timeptr:这是指向表示日历时间的 time_t 值的指针,该日历时间可被分解为以下各部分。
struct tm {
   int tm_sec;         /* 秒,范围从 0 到 59                */
   int tm_min;         /* 分,范围从 0 到 59                */
   int tm_hour;        /* 小时,范围从 0 到 23                */
   int tm_mday;        /* 一月中的第几天,范围从 1 到 31                    */
   int tm_mon;         /* 月份,范围从 0 到 11                */
   int tm_year;        /* 自 1900 起的年数                */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6                */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365                    */
   int tm_isdst;       /* 夏令时                        */    
};

C++

Copy

1.2 将指定时间转换为时间戳

我们将mktime函数进行封装,

/**
* 如果我们要转换2022年9月19日21时0分0秒为时间戳,则传参为TimeToTimeStamp(2022, 9, 19, 21,0, 0)
*/
std::time_t TimeToTimeStamp(
    int year,
    int month,
    int day,
    int hour,
    int minute,
    int second
)
{
    struct tm temp_tm;
    memset(&temp_tm, 0, sizeof(tm));
    temp_tm.tm_year = year - 1900;
    temp_tm.tm_mon = month - 1;
    temp_tm.tm_mday = day;
    temp_tm.tm_hour = hour;
    temp_tm.tm_min = minute;
    temp_tm.tm_sec = second;
    temp_tm.tm_isdst = 0;

    int ret;
    char buffer[128];
    ret = mktime(&temp_tm);
    if (ret == -1) {
        std::cout             
关注
打赏
1604459285
查看更多评论
0.0406s