我有一臺服務器從幾個設備收集信息。每臺設備與服務器位於不同的時區。 我想比較服務器的時間和設備發送服務器的時間。 1.設備如何獲取當前時間(包括時區)(這將發送到服務器)? 2.服務器如何比較當地時間與服務器給出的時間?比較來自不同時區的時間提升
回答
您可能使用完全準備好的Boost date_time庫來處理時區。您的代碼可能類似於:
// The device will collect the time and send it to the server
// along its timezone information (e.g., US East Coast)
ptime curr_time(second_clock::local_time());
// The server will first convert that time to UTC using the timezone information.
// Alternatively, the server may just send UTC time.
typedef boost::date_time::local_adjustor<ptime, -5, us_dst> us_eastern;
ptime utc_time = us_eastern::local_to_utc(curr_time);
// Finally the server will convert UTC time to local time (e.g., US Arizona).
typedef boost::date_time::local_adjustor<ptime, -7, no_dst> us_arizona;
ptime local_time = us_arizona::utc_to_local(utc_time);
std::cout << to_simple_string(local_time) << std::endl;
爲了充分的DST照顧你需要的地方調節器定義(在示例代碼us_eastern
和us_arizona
)期間手動指定它。 DST支持包含在美國境內,但您可以使用DST utilities來處理其他國家的DST(不過您需要根據每個國家/地區定義DST規則)。
什麼是local_adjust中的-5? 我如何知道機器的霧區? (它的Linux - 用戶可以配置它,所以我不能這樣做硬編碼) 當從UTC轉換回當地時間,如何提升知道什麼時區轉換? – Shay 2012-07-22 18:01:25
這是時區信息(與UTC的小時差)。 – betabandido 2012-07-22 18:02:11
您不能忽略夏令時。 – 2012-07-22 18:03:40
- 1. 如何比較來自不同時區的日期時間
- 2. Rails:TimeWithZone比較不同區域的時間
- 3. 來自不同時區的時間差
- 4. 最好的比較不同時區之間時間的方法
- 5. 如何比較不同時區之間的時間戳?
- 6. 在python不同時區比較相同的時間
- 7. 如何比較來自不同時區的日期
- 8. 比較來自不同表格的兩個時間戳
- 9. 如何比較不同時區的時間
- 10. python比較日期時間與不同的時區
- 11. 比較時間24小時區間
- 12. SQL - 比較不同時區的日期
- 13. 條件比較不同時間的
- 14. Java比較時間與時區
- 15. 比較時間與時區到現在
- 16. Groovy:你如何初始化和比較來自不同時區的日期/時間值?
- 17. 如何處理來自不同時區的日期時間
- 18. 處理來自不同時區的時間和存儲到mysql
- 19. 比較不知道機器的時區的時間
- 20. MySQL時區比較
- 21. 時間比較
- 22. Oracle數據庫能夠比較不同時區的時間戳嗎?
- 23. 比較來自不同表格的DOB
- 24. 比較不帶時區的javascript日期
- 25. 時間戳比較
- 26. mysql時間比較
- 27. Oracle時間比較
- 28. SystemC時間比較
- 29. fullCalendar比較時間
- 30. PHP比較時間
爲什麼不讓所有設備發送UTC時間? – 2012-07-22 16:06:58
http://www.boost.org/doc/libs/1_50_0/doc/html/date_time/local_time.html#date_time.local_time.local_date_time – timrau 2012-07-22 16:10:26
因爲最後我需要將utc時間轉換爲本地時間以便呈現在GUI – Shay 2012-07-22 17:40:04