산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++ 날짜와 시간 완벽 가이드: ctime 라이브러리 활용

C++ 표준 라이브러리는 적절한 날짜 타입을 제공하지 않습니다. C++은 날짜와 시간 조작을 위한 구조체와 함수를 C에서 상속받습니다. C++ 프로그램에서 날짜/시간 관련 함수와 구조체에 접근하려면 <ctime> 헤더 파일을 포함해야 합니다.

네 가지 시간 관련 타입이 있습니다: clock_t, time_t, size_t, tm. clock_t, size_t, time_t 타입은 시스템 시간과 날짜를 어떤 정수 형태로 표현할 수 있습니다.

구조체 타입 tm은 다음과 같은 요소를 가진 C 구조체 형태로 날짜와 시간을 보유합니다.

struct tm {
    int tm_sec;   // 분의 초 (0~61)
    int tm_min;   // 시간의 분 (0~59)
    int tm_hour;  // 날의 시간 (0~24)
    int tm_mday;  // 월의 일 (1~31)
    int tm_mon;   // 년의 월 (0~11)
    int tm_year;  // 1900년 이후 년수
    int tm_wday;  // 일요일 이후 일수
    int tm_yday;  // 1월 1일 이후 일수
    int tm_isdst; // 일광 절약 시간
}

C 또는 C++에서 날짜와 시간을 다루며 사용하는 주요 함수들입니다. 이 모든 함수는 표준 C 및 C++ 라이브러리의 일부이며, 아래 주어진 C++ 표준 라이브러리 레퍼런스를 통해 상세 내용을 확인할 수 있습니다.

번호함수 및 목적
1

time_t time(time_t *time);

1970년 1월 1일 이후 경과한 초 단위로 현재 시스템의 캘린더 시간을 반환. 시스템에 시간이 없으면 .1 반환.

2

char *ctime(const time_t *time);

요일 월 일 시:분:초 년\n\0 형태의 문자열 포인터 반환.

3

struct tm *localtime(const time_t *time);

로컬 시간을 나타내는 tm 구조체 포인터 반환.

4

clock_t clock(void);

호출 프로그램이 실행된 시간의 근사값 반환. 시간이 없으면 .1 반환.

5

char *asctime(const struct tm *time);

time이 가리키는 구조체에 저장된 정보를 요일 월 일 시:분:초 년\n\0 형태 문자열로 변환해 포인터 반환.

6

struct tm *gmtime(const time_t *time);

tm 구조체 형태의 시간 포인터 반환. 시간은 협정 세계시(UTC), 즉 그리니치 표준시(GMT)로 표현.

7

time_t mktime(struct tm *time);

time이 가리키는 구조체에서 찾은 시간의 캘린더 시간 상당 값 반환.

8

double difftime(time_t time2, time_t time1);

time1과 time2 사이의 차이를 초 단위로 계산.

9

size_t strftime();

날짜와 시간을 특정 형식으로 포맷팅하는 데 사용.

현재 날짜와 시간

현재 시스템 날짜와 시간을 로컬 시간 또는 협정 세계시(UTC)로 검색하고 싶다고 가정해 봅시다. 이를 달성하는 예제:

Live Demo
#include <iostream>
#include <ctime>
using namespace std;
int main() {
    // 현재 시스템 시간 기준 현재 날짜/시간
    time_t now = time(0);
    // now를 문자열 형태로 변환
    char* dt = ctime(&now);
    cout << "The local date and time is: " << dt << endl;
    // now를 UTC용 tm 구조체로 변환
    tm *gmtm = gmtime(&now);
    dt = asctime(gmtm);
    cout << "The UTC date and time is:" << dt << endl;
}

위 코드를 컴파일하고 실행하면:

The local date and time is: Sat Jan 8 20:07:41 2011
The UTC date and time is:Sun Jan 9 03:07:41 2011

struct tm을 사용한 시간 포맷팅

tm 구조체는 C 또는 C++에서 날짜와 시간을 다룰 때 매우 중요합니다. 이 구조체는 위에서 언급한 대로 C 구조체 형태로 날짜와 시간을 보유합니다. 대부분의 시간 관련 함수는 tm 구조체를 사용합니다. 다양한 날짜/시간 관련 함수와 tm 구조체를 사용하는 예제:

이 장에서 구조체를 사용하면서, 여러분이 C 구조체와 화살표 -> 연산자를 사용한 구조체 멤버 접근에 대한 기본 이해가 있다고 가정합니다.

Live Demo
#include <iostream>
#include <ctime>
using namespace std;
int main() {
    // 현재 시스템 시간 기준 현재 날짜/시간
    time_t now = time(0);
    cout << "Number of sec since January 1,1970 is:: " << now << endl;
    tm *ltm = localtime(&now);
    // tm 구조체의 다양한 구성요소 출력
    cout << "Year:" << 1900 + ltm->tm_year << endl;
    cout << "Month: " << 1 + ltm->tm_mon << endl;
    cout << "Day: " << ltm->tm_mday << endl;
    cout << "Time: " << 5 + ltm->tm_hour << ":";
    cout << 30 + ltm->tm_min << ":";
    cout << ltm->tm_sec << endl;
}

위 코드를 컴파일하고 실행하면:

Number of sec since January 1,1970 is:: 1588485717
Year:2020
Month: 5
Day: 3
Time: 11:31:57

C 언어

  1. 반응성 DC 회로에서 전압과 전류 계산
  2. C++ 변수, 리터럴, 상수 마스터하기: 종합 가이드
  3. C++ 클래스와 객체: 객체지향 프로그래밍 실전 가이드
  4. C++ 메모리 관리 마스터: new와 delete 전문가 활용법
  5. C++ 상속 접근 지정자: public, protected, private 완벽 이해
  6. C++ 프렌드 함수와 프렌드 클래스: 접근 제어 마스터하기
  7. Python 현재 날짜와 시간 가져오기: 실전 가이드
  8. C++ 구조체 vs 클래스: 임베디드 개발자를 위한 실용 가이드
  9. C++ 오버로딩 마스터하기: 함수 & 연산자 오버로딩 완전 정복
  10. C++ 파일 입출력 마스터하기: fstream으로 읽고 쓰기