2015-04-22 15 views
23

std::chrono::time_point::time_since_epoch() trả về một duration, được gọi một số time_point trong quá khứ. Khi nào là time_point? Nó phụ thuộc vào việc thực hiện C++ hoặc nó được định nghĩa bởi chuẩn C++? Hoặc đó là một tiêu chuẩn thực tế để thiết lập kỷ nguyên vào ngày 1 tháng 1 năm 1970 UTC?Khi nào là tiêu chuẩn :: chrono epoch?

+2

'epoch' nói chung đại diện cho điểm bắt đầu của đồng hồ. Có nhiều hơn một đồng hồ trong 'C++ 11 chrono'. – bolov

+0

http://en.cppreference.com/w/cpp/chrono/time_point/time_since_epoch – SChepurin

+1

Bài viết này giải thích điều này: http://www.informit.com/articles/article.aspx?p=1881386&seqNum=2 – newbie

Trả lời

31

Đây là chức năng của cả hai số clock cụ thể là time_point là và thực hiện clock đó. Tiêu chuẩn này quy định cụ thể ba đồng hồ khác nhau:

  • system_clock
  • steady_clock
  • high_resolution_clock

Và tiêu chuẩn không xác định thời đại đối với bất kỳ của những đồng hồ.

Người lập trình (bạn) cũng có thể tạo đồng hồ của riêng họ, có thể hoặc không thể chỉ định kỷ nguyên.

Có một tiêu chuẩn không chính thức (không chính thức) rằng std::chrono::system_clock::time_point có kỷ nguyên phù hợp với Unix Time. Điều này được định nghĩa là khoảng thời gian đã 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.

Fwiw, here is a date/time library tận dụng lợi thế của tiêu chuẩn này.

Không có tiêu chuẩn không thực tế cho hai đồng hồ được chỉ định khác. Ngoài ra, high_resolution_clock được phép là bí danh loại cho system_clock hoặc steady_clock.

Trên OS X, high_resolution_clock là bí danh loại cho steady_clocksteady_clock là một số nano giây kể từ khi máy tính khởi động (không có mối quan hệ nào với UTC).

+1

Cho tương lai độc giả: Bạn có danh sách các liên kết đến tài liệu chính thức mà người ta có thể kiểm tra xem điều này có đúng không? – MikeMB

+1

Dưới đây là tất cả các giấy tờ C++: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/ Trong số các tài liệu này sẽ là bản nháp của tiêu chuẩn C++ có chứa đặc tả chính thức cho ' ' . Đặc tả chính thức của C++ 14 là http://www.open-std.org/jtc1/sc22/wg21/prot/14882fdis/n4141.pdf nhưng không có sẵn. Tuy nhiên http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf là bản thảo tiếp theo sau đó và phải đủ gần. Bản thảo hiện tại của C++ 17 là http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4618.pdf –

+0

Cảm ơn bạn rất nhiều, tôi cần phải chính xác hơn: Tôi có nghĩa là nếu có bất kỳ tài liệu nào về hành vi không thực tế của các triển khai thư viện chuẩn khác nhau liên quan đến 'std :: chrono :: system_clock'. Điều đó sẽ tránh được sự cần thiết phải viết các unittests cụ thể của nền tảng để xác minh hành vi đó. – MikeMB

Các vấn đề liên quan