c++ - 将 SQLite 日期字段转换为 C++ Time_T

标签 c++ sqlite date time-t

如何将以下格式的 SQLite 日期转换为 C++ Time_T 变量?

YYYY-MM-DD HH:MM:SS

最佳答案

您不妨阅读this question ,其中讨论了一些方法。特别是,如果您有权访问 Boost,则可以使用 <boost/date_time/posix_time/posix_time.hpp>并创建一个 boost::posix_time::ptime从问题中的格式字符串中对象。 (请参阅该问题的第一个答案。)

或者,您可以使用 strptime() .

例子:

#include <ctime>
#include <iostream>

std::size_t timestamp_to_seconds(const char* timestamp)
{
    std::tm tm_struct;

    strptime(timestamp, "%Y-%m-%d %H:%M:%S", &tm_struct);
    // You can control daylight savings time if necessary.
    tm_struct.tm_isdst = 1;
    std::size_t t = std::mktime(&tm_struct);

    return t;
}

int main()
{
    std::cout << timestamp_to_seconds("2013-07-05 12:34:56") << std::endl;

    return 0;
}

运行这个例子给出了以下输出:

$ ./a.out
1373042096
$ date -d "2013-07-05 12:34:56" +%s
1373042096

如您所见,它与 date 一致公用事业。 (我假设你在一个可以访问 strptime 的平台上。)在处理夏令时或时区信息时你可能必须小心......我不得不使用 tm_struct.tm_isdst = 1强制识别夏令时并与date达成协议(protocol).

关于c++ - 将 SQLite 日期字段转换为 C++ Time_T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17493313/

相关文章:

SQLite 和自定义顺序

sqlite - 在 Tcl 列表中将元素用单引号括起来以进行 sqlite 插入

Mysql每个月的最小值和最大值以及对应的 "date"

c++ - MSVC -Wall 标准标题中的数千条警告是怎么回事?

c++ - 在 ';' token c++ 之前预期的错误主表达式

c++ - 比较函数调用返回的字符串

python - LAN 上的 SQLite

c++ - Linux 上运行程序的目录?

mysql - TimeZoneInfo.ConvertTimeToUtc() 的日期时间错误

r - 修改 R 中 x 轴上的日期格式?