C++에서 시간을 밀리 초 단위로 가져 오는 방법

Jinku Hu 2023년10월12일
  1. std::chrono::system_clock::now()메서드를 사용하여 C++에서 시간 (밀리 초)을 가져옵니다
  2. gettimeofday()함수를 사용하여 C++에서 시간을 밀리 초 단위로 가져옵니다
  3. time()함수를 사용하여 C++에서 시간을 밀리 초 단위로 가져옵니다
C++에서 시간을 밀리 초 단위로 가져 오는 방법

이 기사에서는 밀리 초 단위로 시간을 얻는 방법에 대한 여러 C++ 메서드를 소개합니다.

std::chrono::system_clock::now()메서드를 사용하여 C++에서 시간 (밀리 초)을 가져옵니다

std::chrono::system_clock 클래스는 시스템 전체의 실시간 벽시계를 얻기위한 C++의 인터페이스입니다. 대부분의 시스템은 Unix epoch라고하는 1970 년 1 월 1 일 (임의의 날짜) 00:00:00 UTC부터 지난 초로 표시되는 Unix 시간을 사용합니다. 윤초는 무시됩니다. 따라서 Unix 시간은 UTC의 정확한 표현이 아닙니다.

먼저 현재 시점을 반환하기 위해now()메서드가 호출됩니다. 다음으로 호출되는 메소드는* this와 시계의 epoch 사이의 시간을 검색하는time_since_epoch이지만std::chrono::duration 클래스 객체를 반환합니다. 이 객체는 실제 틱 수를 반환하고 밀리 초로 나타 내기 위해count 메서드를 호출해야합니다. 결과는duration_cast <milliseconds>를 사용하여 캐스트됩니다.

#include <sys/time.h>

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

using std::cout;
using std::endl;
using std::chrono::duration_cast;
using std::chrono::milliseconds;
using std::chrono::seconds;
using std::chrono::system_clock;

int main() {
  auto millisec_since_epoch =
      duration_cast<milliseconds>(system_clock::now().time_since_epoch())
          .count();
  auto sec_since_epoch =
      duration_cast<seconds>(system_clock::now().time_since_epoch()).count();

  cout << "seconds since epoch: " << sec_since_epoch << endl;
  cout << "milliseconds since epoch: " << millisec_since_epoch << endl;

  return EXIT_SUCCESS;
}

출력:

seconds since epoch: 1603612778
milliseconds since epoch: 1603612778389

gettimeofday()함수를 사용하여 C++에서 시간을 밀리 초 단위로 가져옵니다

gettimeofday는 시스템 시계를 검색하는 POSIX 호환 함수입니다. 시간 값을 저장하는 첫 번째 인수로struct timeval 객체의 주소를 사용합니다. 값은 초 수를 나타내는tv_sec이고 Unix epoch 이후 경과 한 마이크로 초로tv_usec입니다. gettimeofday는 성공하면int 값 0을 반환하고 오류 처리 기능을 제공하지 않으면 -1을 반환합니다. 함수의 두 번째 인수는struct timezone이지만 감가 상각되었으므로nullptr 만 전달하면됩니다. 함수 정의에<sys/time.h>헤더를 포함해야합니다.

#include <sys/time.h>

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

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

int main() {
  struct timeval time_now {};
  gettimeofday(&time_now, nullptr);
  time_t msecs_time = (time_now.tv_sec * 1000) + (time_now.tv_usec / 1000);

  cout << "seconds since epoch: " << time_now.tv_sec << endl;
  cout << "milliseconds since epoch: " << msecs_time << endl << endl;

  return EXIT_SUCCESS;
}

출력:

seconds since epoch: 1603612778
milliseconds since epoch: 1603612778389

time()함수를 사용하여 C++에서 시간을 밀리 초 단위로 가져옵니다

C++에서 시스템 시간을 검색하는 또 다른 POSIX 호환 방법은time 함수를 호출하는 것입니다. time은 반환 된 시간 값이 저장되는time_t *유형의 선택적 인수를 사용합니다. 또는 함수 반환 값을 사용하여 별도로 선언 된 변수에 저장할 수 있습니다. 후자의 경우 인수로nullptr을 전달할 수 있습니다. 이 호출은 이전 호출과 동일한 정밀도로 시간을 반환하지 않습니다.

#include <sys/time.h>

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

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

int main() {
  time_t now = time(nullptr);
  time_t mnow = now * 1000;

  cout << "seconds since epoch: " << now << endl;
  cout << "milliseconds since epoch: " << mnow << endl << endl;

  return EXIT_SUCCESS;
}

출력:

seconds since epoch: 1603612778
milliseconds since epoch: 1603612778000
작가: 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