C++ 날짜와 시간: 초보자 가이드
안녕하세요, 미래의 C++ 마법사 여러분! 오늘은 C++에서 날짜와 시간의 세계를 탐험하는 흥미로운 여정을 떠날 거예요. 아직 코드를 한 줄도 작성하지 않았다고 해도 걱정 마세요 – 저는 여러분과 함께 있어서, 모든 것을 단계별로 설명해 드릴 거예요. 그럼, 좋아하는 음료를 준비하고 편하게 앉아서, 같이 빠지자!
기본 이해
날짜와 시간을 조작하기 전에, C++에 내장된 날짜 형식이 없다는 것을 이해하는 것이 중요해요. 대신, C++는 시간을 나타내기 위해 time_t
데이터형식을 사용해요. 이것이 좀 이상하게 들릴 수 있지만, 1970년 1월 1일부터 경과된 초를 나타내는 큰 숫자라고 생각하면 됩니다. 이 날짜는 컴퓨터 과학에서 종종 "에포크"라고 불립니다 – 현대 컴퓨팅의 탄생일과 같아요!
현재 날짜와 시간
간단하지만 강력한 것부터 – 현재 날짜와 시간을 가져오는 방법을 알아보겠습니다. 이렇게 하면 됩니다:
#include <iostream>
#include <ctime>
int main() {
time_t now = time(0);
std::cout << "Current time: " << now << std::endl;
return 0;
}
이렇게 동작합니다:
- 우리는 입력/출력 연산과 시간 관련 함수를 위해
<iostream>
와<ctime>
헤더를 포함합니다. -
main()
함수에서time(0)
을 사용하여 현재 시간을 가져옵니다. - 이 시간을
time_t
변수인now
에 저장합니다. - 마지막으로, 이 값을 출력합니다.
이 프로그램을 실행하면 큰 숫자가 출력됩니다. 그것은 에포크 이후 경과된 초입니다. 인간이 읽기 쉽게 않죠? 걱정 마세요, 곧 수정하겠습니다!
time_t를 문자열로 변환
이제 우리의 출력을 더 읽기 쉽게 만들어보겠습니다:
#include <iostream>
#include <ctime>
int main() {
time_t now = time(0);
char* dt = ctime(&now);
std::cout << "The local date and time is: " << dt << std::endl;
return 0;
}
새로운 점은 다음과 같습니다:
- 우리는
ctime()
함수를 사용하여time_t
값을 문자열로 변환합니다. - 이 문자열은
dt
에 저장됩니다. - 우리는 이 문자열을 출력하여 인간이 읽을 수 있는 날짜와 시간을 얻습니다.
많이 나아졌죠? "The local date and time is: Tue Jun 22 15:30:45 2023"과 같은 것을 볼 수 있습니다.
struct tm을 사용하여 시간 형식 지정
ctime()
는 편리하지만, 때로는 날짜와 시간 형식에 더 많은 제어가 필요합니다. 이 때 struct tm
이 유용합니다. 이 구조체는 시간을 연(년), 월, 일, 시, 분 등의 구성 요소로 나눕니다.
이렇게 사용하면 됩니다:
#include <iostream>
#include <ctime>
int main() {
time_t now = time(0);
tm *ltm = localtime(&now);
std::cout << "Year: " << 1900 + ltm->tm_year << std::endl;
std::cout << "Month: " << 1 + ltm->tm_mon << std::endl;
std::cout << "Day: " << ltm->tm_mday << std::endl;
std::cout << "Time: " << ltm->tm_hour << ":";
std::cout << ltm->tm_min << ":";
std::cout << ltm->tm_sec << std::endl;
return 0;
}
이렇게 동작합니다:
- 우리는
localtime()
를 사용하여time_t
값을tm
구조체로 변환합니다. - 그런 다음, 날짜와 시간의 개별 구성 요소에 접근하기 위해 구조체 멤버를 사용합니다.
-
tm_year
는 1900년부터 연을 세므로 1900을 더해야 합니다. -
tm_mon
은 0에서 11까지 월을 나타므로 1을 더해야 합니다.
이렇게 하면 날짜와 시간 정보를 표시하는 데 더 많은 유연성을 가질 수 있습니다.
형식 옵션
이제 날짜와 시간의 개별 구성 요소에 접근하는 방법을 알았으니, 일반적인 형식 옵션을 살펴보겠습니다:
형식 지정자 | 설명 | 예시 |
---|---|---|
%Y | 연 (4자리) | 2023 |
%y | 연 (2자리) | 23 |
%m | 월 (01-12) | 06 |
%d | 월의 일 (01-31) | 22 |
%H | 24시간 형식의 시간 (00-23) | 15 |
%I | 12시간 형식의 시간 (01-12) | 03 |
%M | 분 (00-59) | 30 |
%S | 초 (00-59) | 45 |
%p | AM 또는 PM 지정 | PM |
이제 이들을 사용해 보겠습니다:
#include <iostream>
#include <ctime>
#include <iomanip>
int main() {
time_t now = time(0);
tm *ltm = localtime(&now);
std::cout << "Custom format: "
<< std::put_time(ltm, "%Y-%m-%d %I:%M:%S %p")
<< std::endl;
return 0;
}
이 예제에서:
- 우리는
std::put_time
를 위해<iomanip>
헤더를 포함합니다. - 우리는
std::put_time
를 사용하여 제공한 지정자에 따라 시간을 형식 지정합니다. - 이는 "2023-06-22 03:30:45 PM"과 같은 출력을 생성합니다.
결론
축하합니다! 여러분은 C++에서 날짜와 시간 조작의 첫 걸음을 내딛었습니다. 현재 시간을 가져오고, 그것을 읽을 수 있는 문자열로 변환하고, 개별 구성 요소에 접근하고, 심지어는 사용자 정의 형식을 만드는 방법을 다루었습니다.
기억해요, 날짜와 시간을 다루는 것은 힘들 수 있습니다 (시간대, 섬봉일 시간, 윤년 등을 생각해 봐요),但这些基础知识는 대부분의 상황에서 유용합니다. C++ 여정을 계속하면서, 더 복잡한 날짜와 시간 연산을 처리하기 위한 고급 기술과 라이브러리를 발견할 것입니다.
연습을 계속하고, 호기심을 지키고, 가장 중요한 것은 코딩을 즐기세요! 누가 알아, 언젠가는 여러분이 다음 큰 시간 여행 기계의 코드를 작성하는 사람이 될 수도 있습니다. 그 까지까지, 컴파일러를 뜨겁게 하고, 문법 오류를 차갑게 두세요!
Credits: Image by storyset