C++ 날짜 및 시간
C++ 표준 라이브러리는 소위 날짜 유형을 제공하지 않습니다. C++는 날짜 및 시간 작업을 위한 C 언어의 구조와 기능을 상속합니다. 날짜 및 시간 관련 함수와 구조를 사용하려면 C++ 프로그램에서 <ctime> 헤더 파일을 참조해야 합니다.
시간 관련 유형에는 clock_t, time_t, size_t 및 tm의 네 가지 유형이 있습니다. clock_t, size_t 및 time_t 유형은 시스템 시간과 날짜를 특정 정수로 나타냅니다.
구조체 유형 tm 날짜와 시간을 C 구조 형태로 저장합니다. tm 구조의 정의는 다음과 같습니다.
struct tm { int tm_sec; // 秒,正常范围从 0 到 59,但允许至 61 int tm_min; // 分,范围从 0 到 59 int tm_hour; // 小时,范围从 0 到 23 int tm_mday; // 一月中的第几天,范围从 1 到 31 int tm_mon; // 月,范围从 0 到 11 int tm_year; // 自 1900 年起的年数 int tm_wday; // 一周中的第几天,范围从 0 到 6,从星期日算起 int tm_yday; // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起 int tm_isdst; // 夏令时 }
다음은 C/C++에서 날짜와 시간에 관한 중요한 함수입니다. 이 모든 함수는 C/C++ 표준 라이브러리의 일부입니다. C++ 표준 라이브러리에서 각 함수의 세부 정보를 확인할 수 있습니다.
일련 번호 | 기능 및 설명 |
---|---|
1 | time_t time(time_t *time); 이 함수는 시스템의 현재 달력 시간, 즉 1월 1일 이후 경과된 초 수를 반환합니다. 1970년. 시스템에 시간이 없으면 .1이 반환됩니다. |
2 | char *ctime(const time_t *time); 이것은 문자열 일 월 연 시:분:초 연도 형식으로 현지 시간을 나타내는 문자열 포인터를 반환합니다. 현재 날짜 및 시간아래 예에서는 현지 시간 및 협정 세계시(UTC)를 포함하여 현재 시스템 날짜 및 시간을 가져옵니다. #include <iostream> #include <ctime> using namespace std; int main( ) { // 基于当前系统的当前日期/时间 time_t now = time(0); // 把 now 转换为字符串形式 char* dt = ctime(&now); cout << "本地日期和时间:" << dt << endl; // 把 now 转换为 tm 结构 tm *gmtm = gmtime(&now); dt = asctime(gmtm); cout << "UTC 日期和时间:"<< dt << endl; } 위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. 本地日期和时间:Sat Jan 8 20:07:41 2011 UTC 日期和时间:Sun Jan 9 03:07:41 2011 구조 tm을 사용하여 시간 형식 지정tm 구조는 C/C++에서 날짜 및 시간 관련 작업을 처리할 때 특히 중요합니다. tm 구조는 날짜와 시간을 C 구조로 유지합니다. 대부분의 시간 관련 함수는 tm 구조를 사용합니다. 다음 예에서는 tm 구조와 다양한 날짜 및 시간 관련 함수를 사용합니다. 구조 사용을 연습하기 전에 C 구조에 대한 기본적인 이해가 있어야 하며 화살표 -> 연산자를 사용하여 구조 멤버에 액세스하는 방법을 알아야 합니다. #include <iostream> #include <ctime> using namespace std; int main( ) { // 基于当前系统的当前日期/时间 time_t now = time(0); cout << "Number of sec since January 1,1970:" << 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: "<< 1 + ltm->tm_hour << ":"; cout << 1 + ltm->tm_min << ":"; cout << 1 + ltm->tm_sec << endl; } 위 코드를 컴파일하고 실행하면 다음과 같은 결과가 나옵니다. Number of sec since January 1, 1970:1294548238 Year: 2011 Month: 1 Day: 8 Time: 22: 44:59 |