Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Patricia Arquetteasal
2024-11-25 12:52:12786semak imbas

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");

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));

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;

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);

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:
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