Thư viện <chrono>
chỉ đề cập đến thời gian và không phải ngày, ngoại trừ system_clock
có khả năng chuyển đổi thời gian của nó thành time_t
. Vì vậy, việc sử dụng <chrono>
cho các ngày sẽ không cải thiện được nhiều thứ. Hy vọng rằng chúng tôi có được một cái gì đó như chrono::date
trong tương lai không xa.
Điều đó nói rằng, bạn có thể sử dụng <chrono>
theo cách sau:
#include <chrono> // chrono::system_clock
#include <ctime> // localtime
#include <sstream> // stringstream
#include <iomanip> // put_time
#include <string> // string
std::string return_current_time_and_date()
{
auto now = std::chrono::system_clock::now();
auto in_time_t = std::chrono::system_clock::to_time_t(now);
std::stringstream ss;
ss << std::put_time(std::localtime(&in_time_t), "%Y-%m-%d %X");
return ss.str();
}
Lưu ý rằng std::localtime
có thể gây ra các cuộc đua dữ liệu. localtime_r
hoặc các chức năng tương tự có thể có sẵn trên nền tảng của bạn.
Cập nhật:
Sử dụng một phiên bản mới của Howard Hinnant của date library bạn có thể viết:
#include "date.h"
#include <chrono>
#include <string>
#include <sstream>
std::string return_current_time_and_date() {
auto now = std::chrono::system_clock::now();
auto today = date::floor<days>(now);
std::stringstream ss;
ss << today << ' ' << date::make_time(now - today) << " UTC";
return ss.str();
}
này sẽ in ra một cái gì đó như "2015/07/24 05: 15: 34,043473124 UTC".
Trên ghi chú không liên quan, trả lại các đối tượng const
trở nên không mong muốn với C++ 11; không thể di chuyển các giá trị trả về const. Tôi cũng đã xóa bỏ dấu sau bởi vì dấu sau chỉ hợp lệ cho các hàm thành viên và hàm này không cần phải là thành viên.
Vui lòng tra cứu nếu đã có câu hỏi như vậy và nếu không thì hãy hỏi. – legends2k
* Có thể trùng lặp: * http://stackoverflow.com/questions/12346260/c-date-and-time – legends2k
Bạn sẽ không nhận được tốt hơn nhiều với C++ 11. chrono là nhiều hơn về thời gian (bao lâu đã làm một cái gì đó mất) so với công cụ loại thời gian trong ngày. Bạn có thể kiểm tra thời gian tăng ngày, mặc dù. Nó có chức năng ngày và giờ mạnh mẽ hơn. –