C++로 시스템 시간 인쇄

Jinku Hu 2023년10월12일
  1. std::chrono::system_clockstd::ctime을 사용하여 C++로 시스템 시간 인쇄
  2. time,localtimestrftime을 사용하여 C++로 시스템 시간 인쇄
C++로 시스템 시간 인쇄

이 기사에서는 C++에서 시스템 시간을 인쇄하는 방법에 대한 몇 가지 방법을 설명합니다.

std::chrono::system_clockstd::ctime을 사용하여 C++로 시스템 시간 인쇄

std::chrono::system_clock은 시스템 전체의 벽시계를 나타내며std::time_t 유형으로 /에서 변환 할 수있는 두 가지 기능을 제공합니다. 후자의 객체는ctime 함수를 사용하여 처리하고Wed Jun 30 21:49:08 1993\n 형식의 null로 끝나는 문자열을 반환 할 수 있습니다. 이 경우 두 호출을 모두 캡슐화하고 호출자에게 ‘문자열’값을 반환하는 별도의 함수를 구성합니다. 또한 더 유연한 형식으로 값을 반환하기 위해 줄 바꾸기 문자를 제거했습니다. 또한system_clock::now는 현재 시점을 검색하는 데 사용됩니다.

#include <sys/time.h>

#include <chrono>
#include <ctime>
#include <iostream>

using std::cout;
using std::endl;
using std::string;

std::string timeToString(std::chrono::system_clock::time_point &t) {
  std::time_t time = std::chrono::system_clock::to_time_t(t);
  std::string time_str = std::ctime(&time);
  time_str.resize(time_str.size() - 1);
  return time_str;
}

int main() {
  auto time_p = std::chrono::system_clock::now();
  cout << "Current time: " << timeToString(time_p) << endl;

  return EXIT_SUCCESS;
}

출력:

Current time: Fri Apr  1 01:34:20 2021

다음 예제에 설명 된 것처럼 동일한 방법을 사용하여 Epoch 값을 유사한 형식으로 표시 할 수도 있습니다. Epoch는 일반적으로 POSIX/UNIX 시스템의 경우 1970 년 1 월 1 일이지만chrono라이브러리에서 제공되는 다른 클럭에 대해 동일한 값일 필요는 없습니다.

#include <sys/time.h>

#include <chrono>
#include <ctime>
#include <iostream>

using std::cout;
using std::endl;
using std::string;

std::string timeToString(std::chrono::system_clock::time_point &t) {
  std::time_t time = std::chrono::system_clock::to_time_t(t);
  std::string time_str = std::ctime(&time);
  time_str.resize(time_str.size() - 1);
  return time_str;
}

int main() {
  std::chrono::system_clock::time_point time_p2;
  cout << "Epoch: " << timeToString(time_p2) << endl;

  return EXIT_SUCCESS;
}

출력:

Epoch: Thu Jan  1 00:00:00 1970

time,localtimestrftime을 사용하여 C++로 시스템 시간 인쇄

또는 POSIX 특정 함수 인time을 사용하여time_t구조를 직접 검색 할 수 있습니다. time_t는 본질적으로 Epoch 이후 초 수를 저장하는 정수입니다. 이전 방법과 유사하게ctime을 사용하여 사전 정의 된 형식의 문자열로 변환하거나localtime함수를 호출 할 수 있습니다. localtime함수는time_t객체를tm구조로 변환합니다. 이는 특수 지정자로 원하는대로 출력 문자열을 형식화하는 데 사용할 수있는 분류 된 시간 형식입니다. 형식화는 4 개의 매개 변수를 취하는strftime함수에 의해 수행되며, 마지막 매개 변수는struct tm에 대한 포인터입니다. 첫 번째 인수는 문자열이 저장 될 메모리 주소를 지정하고 다음 두 인수는 문자열의 최대 크기와 형식 지정자입니다. 형식 사양에 대한 자세한 개요는이 페이지에서 볼 수 있습니다.

#include <sys/time.h>

#include <ctime>
#include <iostream>

using std::cout;
using std::endl;
using std::string;

int main() {
  char tt[100];
  time_t now = time(nullptr);
  auto tm_info = localtime(&now);

  strftime(tt, 100, "%Y-%m-%d %H:%M:%S", tm_info);
  puts(tt);

  return EXIT_SUCCESS;
}

출력:

2021-04-02 05:42:46
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Time