首页 > 解决方案 > 进行程序检查当前日期是否=预期日期

问题描述

有没有办法让 c++ 等到它应该继续执行其余代码的预定日期?

我不希望它使用等待或睡眠之类的东西等待,我实际上希望它只使用 if 语句进行检查。非常糟糕的伪代码示例:

if current_date == intended_date
    cout << "Happy Birthday";
end 

我希望程序仅在满足生日条件时才说生日快乐。我知道您可以使用 std::chrono::system_clock::now() 获取当前日期。但是,我不知道如何格式化预期日期,以便它可以根据当前日期检查它。

标签: c++

解决方案


我认为标准模块 chrono 和 iomanip 为您提供了您正在寻找的东西:

#include <chrono>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
#include <list>

int main()
{
    auto currentTime = std::chrono::system_clock::to_time_t(
        std::chrono::system_clock::now()
    );

    std::stringstream timeStream;
    timeStream << std::put_time(std::localtime(&currentTime), "%m-%d");

    const std::list<std::string> birthdays = {"12-08", "10-03"};
    for (auto& date : birthdays)
    {
        if(timeStream.str() == date)
        {
            std::cout << "Happy birthday!!\n";
        }
        else
        {
            std::cout << "Try another day!!\n";
        }
    }
    return 0;
}

推荐阅读