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_mon은 1월부터 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
'Programming > C++' 카테고리의 다른 글
[C++] unordered_map (0) | 2022.11.08 |
---|---|
[C++] map(맵) (0) | 2022.11.08 |
[C++] pair(페어)와 tuple(튜플) (0) | 2022.11.03 |
[C++] lower_bound(), upper_bound() ; 이진 탐색(Binary Search) (0) | 2022.11.01 |
[C++] sort 함수를 이용하여 오름차순/내림차순 정렬하는 방법 (0) | 2022.10.27 |
[C++] bits/stdc++.h (1) | 2022.10.18 |
[C++] 동적 할당(Dynamic Allocation) 방법 (0) | 2022.08.24 |
[C++] cin.ignore() (0) | 2022.07.09 |