Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menukar Masa Mewakili Rentetan kepada `time_t` dalam C?

Bagaimana untuk Menukar Masa Mewakili Rentetan kepada `time_t` dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-11-10 07:41:02149semak imbas

How to Convert a String Representing Time to a `time_t` in C  ?

Menukar Rentetan yang Mewakili Masa kepada time_t dalam C

Apabila bekerja dengan masa dalam C , anda mungkin menghadapi senario di mana anda mempunyai rentetan yang mewakili masa tertentu dan perlu menukarnya kepada jenis data time_t mudah alih. Jenis time_t mewakili masa sebagai bilangan saat berlalu sejak 1 Januari 1970, 00:00:00 UTC.

Penukaran kepada time_t

Dalam C 11 dan kemudian, the Fungsi std::get_time boleh digunakan untuk menghuraikan rentetan ke dalam struct std::tm, yang kemudiannya boleh ditukar kepada time_t menggunakan mktime :

#include <iostream>
#include <sstream>
#include <time.h>

int main() {
  std::string time_details = "16:35:12";
  std::tm tm;
  std::istringstream ss(time_details);
  ss >> std::get_time(&tm, "%H:%M:%S");
  std::time_t time = mktime(&tm);

  // Print the converted time_t
  std::cout << "Converted time: " << time << std::endl;

  return 0;
}

Membandingkan Dua Masa

Setelah anda mempunyai beberapa kali dalam format time_t, anda boleh membandingkannya untuk menentukan yang lebih awal.

#include <iostream>
#include <time.h>

int main() {
  std::string curr_time = "18:35:21"; // Current time
  std::string user_time = "22:45:31"; // User's time
  std::tm curr_tm, user_tm;
  std::istringstream ss;

  // Parse both times
  ss.str(curr_time);
  ss >> std::get_time(&curr_tm, "%H:%M:%S");
  ss.clear();
  ss.str(user_time);
  ss >> std::get_time(&user_tm, "%H:%M:%S");

  // Compare the time_t values
  std::time_t curr_secs = mktime(&curr_tm);
  std::time_t user_secs = mktime(&user_tm);

  if (curr_secs < user_secs) {
    std::cout << "Current time is earlier than user's time" << std::endl;
  } else {
    std::cout << "User's time is earlier than current time" << std::endl;
  }

  return 0;
}

Atas ialah kandungan terperinci Bagaimana untuk Menukar Masa Mewakili Rentetan kepada `time_t` dalam C?. 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