从上次检查开始 C++ 天数
C++ days passed from last check
我想创建一个程序来跟踪用户上次给植物浇水的时间(手动检查)。所以基本上......用户按下一个按钮,程序将今天的日期设置为 date1,然后每天更新 date2。如果差异大于某个日期,程序 returns 一个字符串。
int main() {
int time_elapsed = ; \???
std::cout << needs_water(difference) << "\n";
}
这里是main函数,调用函数如下:
std::string needs_water(int days) {
if (days > 3){
return("Time to water the plant.");
}
else {
return("Don't water the plant!");
}
}
抱歉我的英语不好,在此先感谢。
编辑:简而言之,我想知道的是如何告诉程序从上次检查开始已经过去了多长时间。
根据我的理解,这是一个应该实现您想要实现的示例。将 milliseconds
替换为 days
(c++20) 或 hours
#include <iostream>
#include <string>
#include <chrono>
#include <thread>
using namespace std::chrono;
using namespace std::chrono_literals;
template<typename DurationT>
bool time_elapsed(DurationT time) {
static auto last_check = steady_clock::now();
auto now = steady_clock::now();
auto time_passed = now - last_check;
if (time_passed > time){
last_check = now;
return true;
}
else {
return false;
}
}
int main()
{
for(int i=0; i < 12; ++i) {
std::cout << (time_elapsed(milliseconds{3}) ?
"Time to water the plant!" :
"Don't water the plant!") << std::endl;
std::this_thread::sleep_for(1ms);
}
return 0;
}
how to tell the program how much time elapsed from the last check.
要么你的程序一直运行宁。这样,您就可以将所有数据存储在程序内存中。
但是如果程序是要运行然后退出,那么你显然需要一个外部实体来存储状态。这通常是位于用户主目录下某个固定位置的简单文件。
例如,获取当前时间并将其以某种形式保存到文件中的固定位置。最简单的“形式”是几秒钟,因为......某个恒定的时间 - 通常是从 epoch 开始。然后在程序启动时,查看该文件是否存在,如果存在,则读取最后一次。然后获取自纪元以来的当前时间 - 文件中存储的值与当前时间之间的差异将是经过了多少时间。
我想创建一个程序来跟踪用户上次给植物浇水的时间(手动检查)。所以基本上......用户按下一个按钮,程序将今天的日期设置为 date1,然后每天更新 date2。如果差异大于某个日期,程序 returns 一个字符串。
int main() {
int time_elapsed = ; \???
std::cout << needs_water(difference) << "\n";
}
这里是main函数,调用函数如下:
std::string needs_water(int days) {
if (days > 3){
return("Time to water the plant.");
}
else {
return("Don't water the plant!");
}
}
抱歉我的英语不好,在此先感谢。
编辑:简而言之,我想知道的是如何告诉程序从上次检查开始已经过去了多长时间。
根据我的理解,这是一个应该实现您想要实现的示例。将 milliseconds
替换为 days
(c++20) 或 hours
#include <iostream>
#include <string>
#include <chrono>
#include <thread>
using namespace std::chrono;
using namespace std::chrono_literals;
template<typename DurationT>
bool time_elapsed(DurationT time) {
static auto last_check = steady_clock::now();
auto now = steady_clock::now();
auto time_passed = now - last_check;
if (time_passed > time){
last_check = now;
return true;
}
else {
return false;
}
}
int main()
{
for(int i=0; i < 12; ++i) {
std::cout << (time_elapsed(milliseconds{3}) ?
"Time to water the plant!" :
"Don't water the plant!") << std::endl;
std::this_thread::sleep_for(1ms);
}
return 0;
}
how to tell the program how much time elapsed from the last check.
要么你的程序一直运行宁。这样,您就可以将所有数据存储在程序内存中。
但是如果程序是要运行然后退出,那么你显然需要一个外部实体来存储状态。这通常是位于用户主目录下某个固定位置的简单文件。
例如,获取当前时间并将其以某种形式保存到文件中的固定位置。最简单的“形式”是几秒钟,因为......某个恒定的时间 - 通常是从 epoch 开始。然后在程序启动时,查看该文件是否存在,如果存在,则读取最后一次。然后获取自纪元以来的当前时间 - 文件中存储的值与当前时间之间的差异将是经过了多少时间。