1

我正在使用官方的 Mysql C++ 驱动程序,并且正在尝试读取 mysql 日期时间字符串并将其解析为 c++ 中的 unix 时间戳。

我意识到我可以在 mysql 中使用 unix_timestamp(column_name) 函数,但是,我的特定实例要求我从 c++ 解析字符串。

这是我尝试过的

static long UnixTimeFromMysqlString(std::string &s)

{

struct tm tmlol;
strptime(s.c_str(), "%Y-%m-%d %H:%M:%S", &tmlol);

time_t t = mktime(&tmlol);
return t;

}

我从这个函数得到的结果似乎不正确。输入字符串是标准的 mysql 日期时间字符串。前任。2013-06-06 13:37:42。

有没有人有这样做的经验?谢谢

4

1 回答 1

1

我认为你已经工作了 - 你可以通过查看来测试它:

  string str = "2013-06-06 16:06:00";
  cout << UnixTimeFromMysqlString(str) << endl;

  time_t current = time(NULL);
  cout << current << endl;

当我运行它时,我得到:

1370549160
1370549171

要将其视为字符串,您可以执行以下操作:

  time_t ret = UnixTimeFromMysqlString(str);
  cout << "It is now " << ctime(&ret) << endl;

产生输出:

It is now Thu Jun  6 16:06:00 2013
于 2013-06-06T20:07:20.597 回答