C++ 计算从现在到某物到期的分钟数
我有一个项目,需要我在任务到期时(我假设是在同一天)接受输入。我试图从一个类似的问题中找到一些代码,但它给了我一个错误,我认为这与时间和int值有关。这是我的密码:C++ 计算从现在到某物到期的分钟数,c++,codeblocks,C++,Codeblocks,我有一个项目,需要我在任务到期时(我假设是在同一天)接受输入。我试图从一个类似的问题中找到一些代码,但它给了我一个错误,我认为这与时间和int值有关。这是我的密码: #include <iostream> #include <ctime> using namespace std; int main() { int hour_input,min_input; cout << "What hour is your assignment due?\n";
#include <iostream>
#include <ctime>
using namespace std;
int main() {
int hour_input,min_input;
cout << "What hour is your assignment due?\n";
cin >> hour_input;
cout << "What minute is your assignmnet due?\n";
cin >> min_input;
struct tm* tm;
time_t ts = time(NULL);
long int delta;
tm->tm_hour = hour_input;
tm->tm_min = min_input;
delta = mktime(tm) - ts;
delta += 24*60*60;
cout << "There are "<< delta << " minutes until your assignment is due!\n";
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
整小时输入,最小输入;
cout>hour\u输入;
cout>minu输入;
struct tm*tm;
时间=时间(空);
长三角洲;
tm->tm\u小时=小时输入;
tm->tm_min=min_输入;
delta=mktime(tm)-ts;
δ+=24*60*60;
库特
我会将每个时间结构初始化为当前日期。注意,在成员tm::tm_year中,1970由70指定
第一个错误是创建指向struct tm
的指针,但不将其指向任何对象。您不需要指针:
struct tm tm;
/* set fields */
time_t timestamp = mktime(&tm);
第二个错误是,mktime
要求结构中有完整的数据/时间。如果年、月和日都为零,则返回的时间将是第一年、月和日。调用实际上可能会失败,因为日期必须介于1和31之间
这意味着使用struct tm
来处理差异并不容易。相反,使用Sam建议的difftime
。删除代码中的突出位(并且声明的顺序非常奇怪)
因此,tm是未初始化的,并且指向一个随机位置。此外,您没有正确填写结构,并且您有一个随机的(可能无效的)年、月、日和秒
mktime将尝试使此设置有效,但如果秒数足够大,则会对您的时间和分钟造成严重破坏。假设程序没有在这么长的时间内崩溃。您没有说明发生了什么错误。添加了家庭作业标签,看起来确实如此……是的,我一直在疯狂地剪切和粘贴,我为sl的错误道歉Oppince。使用了与您发布的类似的解决方案,甚至不需要其中的delta变量,谢谢您的帮助!好的,这很有意义,似乎让我得到的部分是difftime()
EDIT:所以我猜我将使用localtime()的“previous”参数的当前日期
函数来实现这一点,所以现在我要弄明白了。完全弄明白了!使用tm_hour
和tm_min
的struct tm
成员来获取本地时间值并进行减法,谢谢您的帮助!
struct tm tm;
/* set fields */
time_t timestamp = mktime(&tm);
struct tm* tm;
tm->tm_hour = hour_input;
tm->tm_min = min_input;
delta = mktime(tm) - ts;