C 날짜와 시간 함수
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
C 날짜와 시간 함수는 C 표준 라이브러리의 time.h 헤더 파일에 정의되어 있으며, 시간과 날짜를 얻고 조작하는 데 사용되는 함수들을 포함한다. 이 함수들은 1977년 PWB/UNIX 1.0의 date 시스템 명령에서 유래되었으며, 1989년 ANSI C 표준에 포함되었다. 주요 함수로는 프로그램 시작 후 경과된 CPU 시간을 반환하는 clock, 두 시간 값의 차이를 계산하는 difftime, 현재 시스템 시간을 반환하는 time 등이 있다. 또한, 시간 값을 문자열로 변환하거나, 캘린더 시간으로 변환하는 asctime, ctime, strftime, gmtime, localtime, mktime 등의 함수도 제공된다. 이 외에도 널 포인터, 초당 클럭 틱 수 등을 나타내는 상수와, 시간 저장을 위한 size_t, clock_t, time_t, timespec 등의 형식 정의, 그리고 날짜와 시간을 나타내는 tm 구조체를 포함한다.
더 읽어볼만한 페이지
- C 표준 라이브러리 - 파일 끝
파일 끝(EOF)은 데이터 소스에서 더 이상 읽을 데이터가 없음을 나타내는 조건이다. - C 표준 라이브러리 - C 자료형
C 자료형은 C 언어에서 데이터 형태를 정의하는 기본 요소로, 다양한 크기와 속성을 가진 산술, 부울 자료형과 구조체, 공용체 등을 제공하며, 컴파일러 및 시스템 아키텍처에 따라 크기와 동작 방식이 달라질 수 있다. - 시간 - 오전
- 시간 - 과거
과거는 이전에 일어난 일, 개인의 경험, 특정 시점 등을 의미하며, 찰스 디킨스의 소설에 등장하고, 철학, 학문 등 다양한 분야에서 연구되며, 교훈을 담고 있는 주제이다.
2. 역사
`strftime`에서 사용되는 형식 문자열은 1977년에 출시된 PWB/UNIX 1.0의 `date` 시스템 명령에서 기원한다.[2][3] 1989년에는 `strftime` 및 기타 날짜 및 시간 함수를 포함하는 ANSI C 표준이 발표되었다.[4]
`time.h`는 C 언어의 표준 라이브러리로, 시간과 날짜를 얻거나 조작하는 함수들을 포함하고 있다. 크게 시간 조작 함수와 형식 변환 함수로 나눌 수 있다.
3. 함수
C 표준 라이브러리에서는 `clock_t`, `time_t` 등의 시간 관련 데이터 타입도 제공하며, `CLOCKS_PER_SEC`와 `TIME_UTC` 같은 상수도 정의되어 있다.[5]
3. 1. 시간 조작
3. 2. 형식 변환
4. 변수, 상수 및 형식
C 날짜 및 시간 연산은 `time.h` 헤더 파일(C++의 `ctime` 헤더)에 정의되어 있다.
4. 1. 상수
- '''NULL''': 널 포인터를 나타내는 상수로, 메모리의 어떤 유효한 위치의 개체도 가리키지 않는 포인터 값이다.
- '''CLOCKS_PER_SEC''': 초당 프로세서 클럭 틱 수를 나타낸다.
- '''TIME_UTC''': 협정 세계시(UTC)에 대한 시간 기준이다. (C11)[6][9]
4. 2. 형식 정의
5. 구조체
'''tm''' 구조체는 날짜와 시간을 나타내는 구조체이다. time.h 헤더 파일(C++에서는 ctime 헤더)에 정의되어 있다.
'''tm''' 구조체의 멤버는 다음과 같다.
- '''tm_sec''': 초 (0~59)
- '''tm_min''': 분 (0~59)
- '''tm_hour''': 시 (0~23)
- '''tm_mday''': 일 (1~31)
- '''tm_mon''': 월 (0~11)
- '''tm_year''': 년 (1900년 기준)
- '''tm_wday''': 요일 (일요일부터 시작, 0~6)
- '''tm_yday''': 연중 일자 (0~365)
- '''tm_isdst''': 서머타임 설정 여부
6. 예제
다음은 현재 시간을 표준 출력 스트림에 출력하는 C 소스 코드이다.
```c
#include
#include
#include
int main(void)
{
time_t current_time;
char* c_time_string;
/* 현재 시간 얻기 */
current_time = time(NULL);
if (current_time == ((time_t)-1))
{
(void) fprintf(stderr, "현재 시간을 얻는 데 실패했습니다.\n");
exit(EXIT_FAILURE);
}
/* 현지 시간 형식으로 변환 */
c_time_string = ctime(¤t_time);
if (c_time_string == NULL)
{
(void) fprintf(stderr, "현재 시간을 변환하는 데 실패했습니다.\n");
exit(EXIT_FAILURE);
}
/* stdout에 출력합니다. ctime()은 이미 줄 바꿈 문자를 추가했습니다. */
(void) printf("현재 시간은 %s", c_time_string);
exit(EXIT_SUCCESS);
}
```
출력은 다음과 같다.
```
Current time is Thu Sep 15 21:18:23 2016
참조
[1]
서적
ISO/IEC 9899:1999 specification
http://www.open-std.[...]
[2]
웹사이트
PWB1 date system command - man page
https://www.tuhs.org[...]
[3]
웹사이트
date.c sourcecode of PWB1
https://www.tuhs.org[...]
[4]
웹사이트
Rationale for American National Standard for Information Systems - Programming Language - C - Date and Time
https://www.lysator.[...]
[5]
문서
open-std.org - Committee Draft -- May 6, 2005
http://www.open-std.[...]
[6]
웹사이트
Modernized API for ISO C
https://www.cl.cam.a[...]
[7]
서적
ISO/IEC 9899:1999 specification
http://www.open-std.[...]
[8]
문서
open-std.org - Committee Draft -- May 6, 2005
http://www.open-std.[...]
[9]
웹사이트
Modernized API for ISO C
https://www.cl.cam.a[...]
2023-11-30
[10]
서적
ISO/IEC 9899:1999 specification
http://www.open-std.[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com