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
참고 사이트
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 |