Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghuraikan Rentetan Tarikh dan Mengira Masa Berlalu Menggunakan C 11's std::chrono?
Menghuraikan Rentetan Tarikh dengan C 11 std::chrono
Apabila bekerja dengan maklumat tarikh dan masa, selalunya perlu menghuraikan rentetan tarikh menjadi perwakilan data yang sesuai. Untuk C 11, ruang nama std::chrono menyediakan alatan berkuasa untuk mengendalikan tempoh masa dan titik masa.
Menghuraikan Rentetan Tarikh
Untuk menghuraikan rentetan tarikh ke dalam std: :chrono, GCC menyediakan fungsi std::get_time. Memandangkan objek std::tm dan rentetan format, std::get_time boleh mengekstrak komponen tarikh dan masa daripada rentetan input. Coretan kod berikut menunjukkan perkara ini:
std::tm tm = {}; std::stringstream ss("Jan 9 2014 12:35:34"); ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
Versi GCC sebelum 5 tidak melaksanakan std::get_time. Sebagai alternatif, anda boleh menggunakan strptime:
std::tm tm = {}; strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
Mengira Masa Berlalu
Setelah anda mempunyai tarikh dan masa yang dihuraikan dalam objek std::tm, anda boleh menukarnya kepada titik_masa menggunakan std::chrono::system_clock::from_time_t:
auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
Time_point ini mewakili tarikh dan masa yang dihuraikan dalam zon waktu semasa. Untuk mengira masa yang berlalu sejak tarikh yang dihuraikan, tolak titik_masa semasa daripada titik_masa yang dihuraikan:
auto now = std::chrono::system_clock::now(); auto elapsed = now - tp;
Komponen Masa Mengakses
std::chrono:: objek tempoh menyediakan akses kepada komponen masa berlalu. Untuk mendapatkan semula bilangan saat, minit, jam dan hari, gunakan fungsi berikut:
auto seconds = std::chrono::duration_cast<std::chrono::seconds>(elapsed).count(); auto minutes = std::chrono::duration_cast<std::chrono::minutes>(elapsed).count(); auto hours = std::chrono::duration_cast<std::chrono::hours>(elapsed).count(); auto days = std::chrono::duration_cast<std::chrono::days>(elapsed).count();
Dengan menggunakan teknik ini, anda boleh menghuraikan rentetan tarikh dengan berkesan ke dalam titik masa std::chrono dan mengira masa yang telah berlalu masa sejak tarikh yang dihuraikan, menyediakan akses kepada komponen masa yang diingini dengan cara yang mudah dan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Rentetan Tarikh dan Mengira Masa Berlalu Menggunakan C 11's std::chrono?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!