回答
您不妨閱讀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
達成一致。
time_t
是一個Unix時間戳(自1970-01-01秒),所以你必須用strftime轉換:
SELECT strftime('%s', '2013-07-05 12:34:56');
結果是一個字符串,但你可以閱讀它作爲一個整數值。
有沒有辦法在應用程序中執行此操作,還是需要針對該數據庫進行查詢? – Talon06
首先將數據庫中的日期以'time_t'格式存儲起來可能是個好主意。如果你真的想把它們轉換成你的程序,請看RyanMck的答案。 –
是的,轉換是否應該通過C++或SQLite進行是有點不清楚的。當然,SQLite轉換更容易。 – 2013-07-05 19:24:44
- 1. 將字符串轉換爲日期C++
- 2. Sqlite將字符串轉換爲日期
- 3. 將日期字段轉換爲僅日期字段
- 4. 將字符串轉換爲time_t,然後將time_t轉換回字符串
- 5. C - 如何將time_t轉換爲tm?
- 6. 將C++ time_t轉換爲Delphi TDateTime
- 7. 字符串轉換爲日期SQLite中
- 8. Sqlite查詢將字符串轉換爲sqlite中的日期?
- 9. 將wxString轉換爲time_t
- 10. 將time_t轉換爲整數
- 11. 將毫秒轉換爲time_t
- 12. 將steady_clock :: time_point轉換爲time_t
- 13. 將time_t轉換爲int64_t
- 14. 將time_t轉換爲int
- 15. 字符串轉換爲time_t
- 16. 將字符串從__DATE__轉換爲time_t
- 17. 將電子郵件日期轉換爲日期字段
- 18. 將oracle日期字段對象轉換爲java日期
- 19. 如何將單個字段轉換爲計算星期的SQLite日期?
- 20. 將varchar字段轉換爲日期字段
- 21. C#將日期從字符串轉換爲日期格式
- 22. 如何將sqlite日期轉換爲R中的日期
- 23. Sqlite:將日期轉換爲月中的日期編號
- 24. 將字符串轉換爲日期字段爲SQL Oracle
- 25. 如何在C++中將ISO 8601字符串轉換爲time_t?
- 26. 如何將time_t類型轉換爲C++中的字符串?
- 27. C++將字符串轉換爲time_t問題
- 28. 在Sqlite中將日期轉換爲字符串
- 29. 將字符串轉換爲日期並將日期轉換回字符串
- 30. 如何將字符串日期轉換爲sqlite中的日期格式
C++有更好的日期時間類型函數我對語言非常陌生,time_t是我發現的第一個東西。我嘗試使用boost庫,但試圖使用它時,我收到了很多編譯錯誤。我不知道這是圖書館還是我缺乏理解。 – Talon06
嗨Talon06,請參閱我的編輯一個簡短的例子。希望你可以修改它以適應你的確切目的。 – 2013-07-06 00:35:51