Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghuraikan Rentetan Tarikh dan Melakukan Pengiraan Masa Menggunakan C 11's std::chrono?

Bagaimanakah Saya Boleh Menghuraikan Rentetan Tarikh dan Melakukan Pengiraan Masa Menggunakan C 11's std::chrono?

Patricia Arquette
Lepaskan: 2024-11-25 12:52:12
asal
939 orang telah melayarinya

How Can I Parse Date Strings and Perform Time Calculations Using C  11's std::chrono?

Menghuraikan Rentetan Tarikh dengan std C 11::chrono

Apabila berurusan dengan rentetan tarikh sejarah, selalunya perlu menghuraikannya ke dalam tarikh C perwakilan untuk pelbagai pengiraan. Ruang nama std::chrono C 11 menyediakan alatan berkuasa untuk pengendalian masa.

Menghuraikan Rentetan Tarikh

Untuk menghuraikan rentetan tarikh format "Kha 9 12 Jan: 35:34 2014," kita boleh memanfaatkan std::stringstream dan std::get_time functions:

std::stringstream ss("Jan 9 2014 12:35:34");
std::tm tm = {};
ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
Salin selepas log masuk

Ini menghuraikan rentetan menjadi std::tm struct, yang mengandungi komponen masa individu.

Menukar kepada std::chrono::time_point

Untuk mendapatkan std::chrono::time_point yang mewakili tarikh yang dihuraikan, kami menggunakan std::chrono::system_clock::from_time_t:

auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
Salin selepas log masuk

Mengira Masa Berlalu

Dengan std::chrono::time_point, kita boleh mengira masa berlalu dengan mudah masa dari sejarah yang ditentukan tarikh:

auto now = std::chrono::system_clock::now();
auto duration = now - tp;
Salin selepas log masuk

Komponen Masa Mengakses

std::chrono::duration menyediakan akses kepada komponen masa individu:

  • tempoh .count() mengembalikan jumlah kiraan unit masa (saat secara lalai)
  • duration.seconds() mendapatkan semula saat
  • duration.minit() memperoleh minit
  • duration.hours() mengambil jam
  • duration.days() menyediakan hari

Sokongan C 11

GCC sebelum versi 5 tidak tidak melaksanakan std::get_time. Walau bagaimanapun, alternatif menggunakan strptime juga tersedia:

std::tm tm = {};
strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Rentetan Tarikh dan Melakukan Pengiraan Masa Menggunakan C 11's std::chrono?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan