zhuwt2008 2018-06-25 23:12 采纳率: 33.3%
浏览 1563
已采纳

为什么我的vc++2015时间函数mktime总是返回-1?

代码如下,不论输入什么时间,比如2018-12-30,mktime总是得到-1,很是奇怪,请教高手这是怎么回事?
#include <iostream>
#include <ctime>

int main(int argc, char *argv[])
{
struct tm time0 = { 0 }, time1 = { 0 };
int year, mon, mday;
time0.tm_year = 70; //mktime能接受的最小年数
time0.tm_mon = 0; //1月
time0.tm_mday = 1; //1日
time0.tm_hour = 8; //8时 +8时区在1970年所能接受的最小小时数
time0.tm_hour = 0;
time0.tm_min = 0;
time0.tm_sec = 0;
printf(""); scanf("%4d-%2d-%2d", &year, &mon, &mday);
time1.tm_year = year - 1900; //struct tm里面,tm_year以1900年为基准。
time1.tm_mon = mon - 1;
time1.tm_mday = mday;
time1.tm_hour = 0;
time1.tm_min = 0;
time1.tm_sec = 0;
auto t1 = mktime(&time1);
auto t2 = mktime(&time0);
long seconds = (long)(difftime(t1, t2));
std::cout << seconds << std::endl;
}

  • 写回答

4条回答 默认 最新

  • threenewbee 2018-06-26 00:48
    关注
     #include <iostream>
    #include <ctime>
    
    int main(int argc, char *argv[])
    {
    tm time0, time1;
    int year, mon, mday;
    time0.tm_year = 70; //mktime能接受的最小年数 
    time0.tm_mon = 0; //1月 
    time0.tm_mday = 1; //1日 
    time0.tm_hour = 8; //8时 +8时区在1970年所能接受的最小小时数 
    //time0.tm_hour = 0;
    time0.tm_min = 0;
    time0.tm_sec = 0;
    printf(""); scanf("%4d-%2d-%2d", &year, &mon, &mday);
    time1.tm_year = year - 1900; //struct tm里面,tm_year以1900年为基准。
    time1.tm_mon = mon - 1;
    time1.tm_mday = mday;
    time1.tm_hour = 0;
    time1.tm_min = 0;
    time1.tm_sec = 0;
    auto t1 = mktime(&time1);
    auto t2 = mktime(&time0);
    long seconds = (long)(difftime(t1, t2));
    std::cout << seconds << std::endl;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失