簡體   English   中英

將SQLite日期字段轉換為C ++ Time_T

[英]Convert SQLite Date Field to C++ Time_T

如何將以下格式的SQLite日期轉換為C ++ Time_T變量?

YYYY-MM-DD HH:MM:SS

您可能希望閱讀此問題 ,其中討論了一些方法。 特別是,如果您有權使用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達成協議。

time_t是Unix時間戳(自1970年1月1日以來的秒數),因此您必須使用strftime進行轉換:

SELECT strftime('%s', '2013-07-05 12:34:56');

結果是一個字符串,但是您可以將其讀取為整數值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM