Tôi biết rằng giá trị mặc định của std::chrono::system_clock::time_point
là kỷ nguyên của đồng hồ, nhưng tôi không thể tìm thấy bất kỳ nhiệm vụ nào trong tiêu chuẩn C++ 11 mà kỷ nguyên của system_clock
giống nhau là kỷ nguyên POSIX (1970-01-01T00: 00: 00Z). Có an toàn để giả định trên Linux và Windows rằng đây là trường hợp? Hay thông minh hơn để sử dụng std::chrono::system_clock::from_time_t(0)
?Nhận POSIX epoch là system_clock :: time_point
Trả lời
Tiêu chuẩn rời khỏi kỷ nguyên của std::chrono::system_clock::time_point
không xác định.
Có ba triển khai của std::chrono::system_clock::time_point
tôi biết:
- libC++
- libstdC++
- VS
Cả ba trong số đó là giấy gói mỏng xung quanh Unix Time, mà đếm số lượng số giây đã trôi qua kể từ 00:00:00 Giờ Quốc tế Phối hợp (UTC), Thứ Năm, ngày 1 tháng 1 năm 1970, không tính giây nhảy vọt.
Tất cả chúng đều dựa trên loại tích phân 64 bit đã ký. Không ai trong số họ là ổn định. libC++ có khoảng thời gian đánh dấu là micro giây. libstdC++ có một khoảng thời gian đánh dấu là nano giây, và VS có một khoảng thời gian đánh dấu là 0,1 micro giây.
Trong trường hợp hữu ích, here is a paper minh họa một số công thức để tận dụng lợi thế của thời đại không xác định nhưng phổ biến để chuyển đổi qua lại từ lịch dân sự mà không qua time_t
.
Lợi thế của việc sử dụng std::chrono::system_clock::from_time_t
là nó được đảm bảo hoạt động theo tiêu chuẩn. Điểm bất lợi là trong thực tế nó sẽ giới hạn bạn đến độ chính xác của một giây (mặc dù độ chính xác đó là không xác định).
Lợi thế của giả sử kỷ nguyên std::chrono::system_clock
là 1970-01-01, mặc dù nó không được chỉ định, là bạn sẽ chính xác trên tất cả các triển khai đã biết và độ chính xác có sẵn cho giải pháp thay thế này cao hơn nhiều bởi time_t
.
- 1. Chuyển đổi std :: chrono :: system_clock :: time_point thành struct timeval và quay lại
- 2. Khi nào là tiêu chuẩn :: chrono epoch?
- 3. Làm thế nào để chuyển đổi một dấu thời gian epoch phân đoạn (đôi) thành một tiêu chuẩn :: chrono :: time_point?
- 4. Sự khác nhau giữa hai cá thể time_point không phải là thời lượng?
- 5. Chuyển đổi steady_clock :: time_point thành time_t
- 6. "epoch" trong keras.models.Model.fit là gì?
- 7. std :: chrono: thêm thời gian tùy chỉnh để time_point
- 8. Điều trị trục là ngày/giờ (epoch)
- 9. Chuyển đổi ngày chuỗi thành thời gian epoch không hoạt động với thư viện Cython và POSIX C
- 10. C++ 11: increment time_point bởi một giây
- 11. Tạo trường mặc định là thời gian epoch
- 12. Ổ cắm TCP và POSIX chấp nhận() ngữ nghĩa
- 13. Nhận giây chrono trong phao
- 14. là ống posix có trọng lượng nhẹ không?
- 15. Tính mili giây từ epoch
- 16. tuân thủ posix cho hệ thống tệp là gì?
- 17. Tên chính xác cho IEEE Std 1003.1, 2004 Edition: POSIX.1-2001 hoặc POSIX.1-2004 là gì?
- 18. ngữ nghĩa S_IRUSR trong POSIX
- 19. Moment.js và Unix Epoch chuyển đổi
- 20. POSIX sh Ngữ pháp EBNF
- 21. Số ngày Joda kể từ ngày Epoch
- 22. Nhận thời gian hiện tại tính bằng giây từ Epoch trên Linux, Bash
- 23. Chuyển đổi Epoch thành Ngày trong Matlab
- 24. JQuery datepicker Set Value As Time Epoch
- 25. Hướng dẫn chủ đề Posix
- 26. Nhận thời gian POSIX/Unix tính bằng giây và nano giây bằng Python?
- 27. Mac OS X POSIX-incompliant? (timer_settime)
- 28. Sự khác biệt giữa ngôn ngữ C và Posix trên Postgres là gì?
- 29. mm/dd/yyyy định dạng epoch với PHP
- 30. Số ngẫu nhiên trong POSIX C API