728x90
728x90

현재 날짜/시간 원하는 형태로 출력하기

 

① 헤더 불러오기

C

#include <time.h>

 

C++

#include <ctime>

 

② time() 함수를 호출하여 현재의 날짜/시간 얻기

time_t timer = time(NULL);
  • time 함수는 time_t 타입을 결과값으로 반환한다.
  • 결과값은 유닉스 운영체제가 공식 출시한 1970년 1월 1일 0시 0분 0초를 기점으로 현재까지 흐른 시간을 초 단위로 나타낸다.

 

③ localtime() 함수를 호출하여 포맷 변환하기

struct tm* t = localtime(&timer);
  • time 함수가 리턴해주는 값은 시스템에 따라 32비트64비트 정수이기 때문에 그대로 사용하기에는 무리가 있다.
  • 따라서 사용하고자 하는 형태에 맞게끔 포맷팅을 해주어야 한다.
  • 이 과정을 localtime 함수를 사용하여 tm 구조체를 활용, 원하는 형태로 변환한다.

 

struct tm 구조체 

  • 시간 구조체는 다음과 같이 정의되어 있다.
struct tm {
   int tm_sec;         // 초, range 0 to 59      
   int tm_min;         // 분, range 0 to 59             
   int tm_hour;        // 시간, range 0 to 23  
   int tm_mday;        // 일, range 1 to 31  
   int tm_mon;         // 월, range 0 to 11     
   int tm_year;        // 1900년 부터의 년                
   int tm_wday;        // 요일, range 일(0) to 토(6) 
   int tm_yday;        // 1년 중 경과 일, range 0 to 365 
   int tm_isdst;       // 섬머타임 실시 여부 (양수, 0, 음수)              
};

 

  • 사용할 때 주의할 점
    • tm_year는 1900년부터의 년이기에 현재 년도를 출력하려면 1900을 더해줘서 사용해야 한다.
    • tm_mon1월부터 12월까지 출력하기 위해서는 1을 더해줘서 사용해야 한다.

 

사용 예

#include <iostream>
#include <cstdio>
#include <ctime>

int main() {
    time_t timer;
    struct tm* t;
    timer = time(NULL);   // 1970년 1월 1일 0시 0분 0초부터 시작하여 현재까지의 초
    t = localtime(&timer);   // 포맷팅을 위해 구조체에 넣기
    
    printf("유닉스 타임 (Unix Time): %lld 초\n\n", timer); 
    printf("현재 년: %d\n", t->tm_year + 1900);
    printf("현재 월: %d\n", t->tm_mon + 1);
    printf("현재 일: %d\n", t->tm_mday);
    printf("현재 시: %d\n", t->tm_hour);
    printf("현재 분: %d\n", t->tm_min);
    printf("현재 초: %d\n", t->tm_sec);
    printf("현재 요일: %d\n", t->tm_wday);   // 일=0, 월=1, 화=2, 수=3, 목=4, 금=5, 토=6
    printf("올해 몇 번째 날: %d\n", t->tm_yday);   // 1월 1일은 0, 1월 2일은 1
    printf("서머타임 적용 여부: %d\n", t->tm_isdst);   // 실시 중이면 양수, 미실시면 0, 실시 정보가 없으면 음수
    
    return 0;
}
유닉스 타임 (Unix Time): 1666255307 초

현재 년: 2022
현재 월: 10
현재 일: 20
현재 시: 8
현재 분: 41
현재 초: 47
현재 요일: 4
올해 몇 번째 날: 292
서머타임 적용 여부: 0

 

 

참고 사이트

 

[C언어/C++] 현재 날짜/시간 원하는 형태로 출력하기 (time, localtime)

개발을 하다 보면 현재 날짜나 현재시간이 필요할 경우가 생깁니다. 이번 포스팅에서는 C언어나 C++에서 현재 날짜, 현재시간을 어떻게 구할 수 있는지에 대해 포스팅하도록 하겠습니다. 1. time

coding-factory.tistory.com

 

728x90
728x90