Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menentukan Masa Terdahulu Antara Dua Nilai Masa Rentetan dalam C ?

Bagaimana untuk Menentukan Masa Terdahulu Antara Dua Nilai Masa Rentetan dalam C ?

DDD
Lepaskan: 2024-11-29 22:34:10
asal
306 orang telah melayarinya

How to Determine the Earlier Time Between Two String Time Values in C  ?

Penukaran Masa Rentetan kepada time_t

Menukar rentetan yang mengandungi masa dalam format "hh:mm:ss" kepada time_t dalam C boleh dicapai dalam pelbagai cara.

Satu kaedah ialah memanfaatkan manipulasi masa dan tarikh lanjutan C 11 keupayaan dengan dan perpustakaan. Anda boleh menggunakan langkah berikut:

  • Tentukan struct tm.
  • Gunakan istringstream untuk membaca rentetan masa.
  • Ekstrak komponen masa menggunakan get_time.
  • Bina nilai time_t menggunakan mktime.

Untuk contoh:

std::tm tm;
std::istringstream ss("16:35:12");
ss >> std::get_time(&tm, "%H:%M:%S"); // or just %T in this case
std::time_t time = std::mktime(&tm);
Salin selepas log masuk

Membandingkan Pembolehubah Masa untuk Nilai Terawal

Untuk membandingkan dua rentetan yang mengandungi masa, anda boleh sama ada membandingkan perwakilan time_t yang sepadan atau menggunakan teknik perbandingan rentetan.

Menggunakan nilai time_t, anda boleh membandingkannya terus menggunakan std::less. Contohnya:

std::string curr_time = "18:35:21";
std::string user_time = "22:45:31";
std::istringstream ss_curr(curr_time);
std::istringstream ss_user(user_time);
std::tm tm_curr, tm_user;
ss_curr >> std::get_time(&tm_curr, "%H:%M:%S");
ss_user >> std::get_time(&tm_user, "%H:%M:%S");
std::time_t time_curr = std::mktime(&tm_curr);
std::time_t time_user = std::mktime(&tm_user);

if (time_curr < time_user) {
  std::cout << curr_time << " is earlier than " << user_time << std::endl;
} else {
  std::cout << user_time << " is earlier than " << curr_time << std::endl;
}
Salin selepas log masuk

Sebagai alternatif, perbandingan rentetan boleh digunakan, dengan mengandaikan kedua-dua masa adalah dalam format yang sama:

if (curr_time < user_time) {
  std::cout << curr_time << " is earlier than " << user_time << std::endl;
} else {
  std::cout << user_time << " is earlier than " << curr_time << std::endl;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Masa Terdahulu Antara Dua Nilai Masa Rentetan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan