Windows C + + 에서 자주 사용 하 는 시간 유형 과 함수

참고:http://www.cnblogs.com/doublesnke/archive/2011/08/05/2128558.html
프로젝트 -: C 표준 라 이브 러 리 사용
장점: 크로스 플랫폼 성 제공;
단점: 초 레벨 까지 만 정확 합 니 다.
 C 런 타임 라 이브 러 리 의 주요 함수 소개:
필요 한 헤더 파일:
#include
1. time()
함수 기능:
현재 시스템 시간 가 져 오기
함수 원형:
time_t time( time_t *timer );
인자:
timer
저장 시간의 메모리 공간;
반환 값:
돌아 온 결 과 는 timet 구조 체
주의: 오류 없 이 돌아 갑 니 다.
time 에 대하 여t 의 설명 은 다음 과 같다.
time_t 데이터 형식 은 달력 시간 (Calendar Time), 즉 한 시간 (1970 년 1 월 1 일 0 시 0 분 0 초) 부터 이때 까지 의 초 수 를 나타 내 는 데 사 용 됩 니 다.
time. h 에서 도 time 을 볼 수 있 습 니 다.t 는 긴 정수 입 니 다.
#ifndef _TIME_T_DEFINED
typedef long time_t;               /*     */
#define _TIME_T_DEFINED            /*        time_t */
#endif

사용 방법:
1 > 들 어 오 는 매개 변 수 는 NULL 입 니 다.
time_t t=time(NULL);
2>  입력 매개 변 수 는 timet 형식의 포인터
time_t t;
time(&t);
2. localtime()/gmtime()
기능:
이 함 수 는 tm 구조 체 를 저장 하 는 시간 을 로 컬 시간 / 그리니치 시간 으로 바 꿉 니 다.
함수 원형:
struct tm *localtime( const time_t *timer );
struct tm *gmtime( const time_t *timer );
struct tm 의 정 의 는 다음 과 같다.
struct tm 
{
	int tm_sec;			/*   –      [0,59] */
	int tm_min;			/*   -      [0,59] */
	int tm_hour;		/*   -      [0,23] */
	int tm_mday;		/*         -      [1,31] */
	int tm_mon;			/*   (     ,0    ) -      [0,11] */
	int tm_year;		/*   ,          1900 */
	int tm_wday;		/*    –      [0,6],  0     ,1     ,     */
	int tm_yday;		/*     1 1       –      [0,365],  0  1 1 ,1  1 2 ,     */
	int tm_isdst;		/*       ,        ,tm_isdst  。         ,tm_isdst 0;      ,tm_isdst()  。*/
};

예시:
질문: 출력 결과 가 같 습 니 다. 다음 과 같 습 니 다.
Tue Apr 24 06:16:05 2012 Tue Apr 24 06:16:05 2012
3. mktime()
기능:
시간 구조 데 이 터 를 달력 날짜 로 변환 (localtime () 의 역할 과 정반 대)
함수 원형:
time_t mktime( struct tm *timeptr );
4. strftime()/wcsftime()
함수 기능:
시간 문자열 을 포맷 합 니 다.
함수 원형:
size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr );
size_t wcsftime( wchar_t *strDest, size_t maxsize, const wchar_t *format, const struct tm *timeptr );
인자:
strDest: 출력 문자열 의 첫 주 소 를 가리 키 는 포인터;
max size: 문자열 의 최대 길이;
format: 형식 변환;
timeptr: tm 구조 체 지침;
사용 가능 한 형식:
% a: 무슨 요일 의 영어 이름 의 줄 임 말;
% A: 무슨 요일 의 영어 이름;
% b: 달의 영어 이름 줄 임 말;
% B: 달의 영어 이름;
% c: 날짜 와 시간의 로 컬 표시;
예: 04 / 24 / 12 13: 08: 57
% d: 1 월 중 며칠 (01 - 31)
% H: 24 시간 제 시간
% I: 12 시간 제 시간
% j: 1 년 중 며칠
% m: 월
% M: 분
% p: 12 시간 제 로 컬 A. M / P. M
% S: 초
% U: 1 년 중 몇 번 째 주 (일요일 을 일주일 의 첫날 로 함)
% w: 무슨 요일 (일요일 0)
% W: 1 년 중 몇 주 (월요일 을 일주일 의 첫날 로)
% x: 날짜;
% X: 시간 (시: 분: 초)
% y: 세기 가 없 는 연수 (수치 0 - 99), 예 를 들 어 12
% Y: 세기 가 있 는 연수, 2012
% z,% Z: 시간 대 이름 (시간 대가 불분명 하면 문자열 을 출력 하지 않 습 니 다)
%%:%
반환 값:
호출 에 성공 하면:
strftime strDest 에 있 는 문자 수 (종결 문자 null 포함) 를 되 돌려 줍 니 다. 최대 maxsize 를 초과 하지 않 습 니 다.
wcsftime 대응 하 는 넓 은 문자 수 되 돌리 기;
호출 실패:
0 을 되 돌려 줍 니 다. strDest 의 내용 이 확실 하지 않 습 니 다.
5. asctime()/ctime()
기능:
시간 구조 체 를 문자열 로 변환 하기;
함수 원형:
char *asctime( const struct tm *timeptr );
wchar_t *_wasctime( const struct tm *timeptr );
char *ctime( const time_t *timer );
wchar_t *_wctime( const time_t *timer );
상기 함 수 는 매개 변수 유형 만 다 르 지만 변환 결 과 는 같 습 니 다.
전환 결과: Tue Apr 24 14: 07: 26 2012
예제 코드 는 다음 과 같다.
출력 결 과 는 다음 과 같다.
2012 / 04 / 24 13: 13: 37 화요일 제1 15 일 중국 표준시 간
프로젝트 2: Windows 에서 제공 하 는 API 사용
장점: 밀리초 까지 정확 합 니 다.
단점: windows API 를 사용 하여 플랫폼 이식 성 이 떨어진다.
(1) 함수 소개:
GetLocalTime()
기능:
이 함 수 는 현재 시스템 날짜 와 시간 을 가 져 오 는 데 사 용 됩 니 다.
함수 원형:
void GetLocalTime( LPSYSTEMTIME lpSystemTime );
인자:
lpSystemTime: SYSTEMTIME 구조 체 를 가리 키 며 현재 로 컬 날짜 와 시간 을 저장 합 니 다.
반환 값:
반환 값 없 음
그 중에서 SYSTEMTIME 구조 체 는 윈도 가 제공 한 것 으로 그 정 의 는 다음 과 같다.
#include <time.h>
#include <stdio.h>

void main() 
{ 
	time_t cTime=time(NULL);

	//      
	tm * lTime=localtime(&cTime);
	//        
	tm * gTime=gmtime(&cTime);

	printf("%s
", asctime(lTime)); printf("%s
", asctime(gTime)); }

주의: 이 구조 체
밀리초 까지 정확하게 할 수 있어 요.
(2) 예시:
출력 결과: 2012 / 04 / 24 13: 29: 13.140 화요일
방안 3: 시스템 호출 이용
장점: 시스템 시간 수정 가능
(1) 함수 소개:
system()/_wsystem()
기능:
DOS 명령 을 내 립 니 다.
함수 원형:
int system( const char *command );
int _wsystem( const wchar_t *command );
인자:
command: 실행 할 명령
반환 값:
command 가 NULL 이 고 명령 해석 기 를 찾 으 면 함수 가 0 이 아 닌 값 을 되 돌려 줍 니 다.
명령 해석 기 를 찾 지 못 하면 0 을 되 돌려 주 고 errno 를 ENOENT 로 설정 합 니 다.
명령 이 NULL 이 아니 라 명령 해석 기 를 찾 으 면 함수 가 명령 해석 기의 결 과 를 되 돌려 줍 니 다.
결과 가 0 이면 명령 해석 기 를 찾 지 못 했 습 니 다.
결과 가 - 1 이면 오류 가 발생 했 음 을 설명 하고 해당 하 는 errno 를 설정 합 니 다.
가능 한 errno 는 다음 과 같 습 니 다:
E2BIG
Argument list (which is system-dependent) is too big.
ENOENT
Command interpreter cannot be found.
ENOEXEC
Command-interpreter file has invalid format and is not executable.
ENOMEM
Not enough memory is available to execute command; or available memory has been corrupted; or invalid block exists, indicating that process making call was not allocated properly.
(2) 예시 코드:
#include <time.h> 
#include <stdio.h> 

void main() 
{ 
	//    
	time_t cTime=time(NULL); 

	char sTime[64]={0}; 

	//     
	struct tm * localTime=localtime(&cTime);
	strftime(sTime, sizeof(sTime), "%Y/%m/%d %X %A    %j  %z
", localTime); printf(sTime); }

예제 에서 time 시스템 명령 을 호출 합 니 다. 명령 행 에서 "time" 명령 을 입력 하 는 것 과 효과 가 같 습 니 다.

좋은 웹페이지 즐겨찾기