1

我正在尝试获取某个日期的时间戳,目前我正在使用该函数mktime(),但它正在生成当前日期的时间戳,而不是我输入的那个。这是代码:

#include <ctime>
#include <iostream>
using namespace std;

long long unixTimeStamp(
    int year,
    int month,
    int day,
    int hour,
    int min,
    int sec
  ) {

  tm uts_time;
  uts_time.tm_year = year - 1900;
  uts_time.tm_mon = month - 1;
  uts_time.tm_mday = day;
  uts_time.tm_sec = sec;
  uts_time.tm_min = min;
  uts_time.tm_hour = hour;

  time_t out = mktime(&uts_time);

  return time(&out);
}

int main() {
  cout << unixTimeStamp(2010,8,29,1,22,9) << endl;
  return 0;
}

输出:

1362541046

有人可以告诉我我做错了什么吗?

4

1 回答 1

4

您使用time不正确。

请参阅该功能的参考time。如果参数不是NULL,则将其设置为当前日历时间。

删除对的调用并按原样time(&out)返回。out

time_t unixTimeStamp(
    int year,
    int month,
    int day,
    int hour,
    int min,
    int sec
  ) 
{

  tm uts_time;
  uts_time.tm_year = year - 1900;
  uts_time.tm_mon = month - 1;
  uts_time.tm_mday = day;
  uts_time.tm_sec = sec;
  uts_time.tm_min = min;
  uts_time.tm_hour = hour;

  return mktime(&uts_time);
}

int main() {
  cout << unixTimeStamp(2010,8,29,1,22,9) << endl;
  return 0;
}

输出:

1283008929

于 2013-03-06T03:59:39.663 回答