일단 시간관련 함수를 사용하기 위해 time.h 라이브러리를 불러와줍니다

#include <stdio.h>

#include <time.h> //이곳입니다

int main(){


}

time.h 라이브러리에 있는 함수를 이용할것인데요

time_tlocaltime() 함수를 이용해야합니다

#include <stdio.h>
#include <time.h> 

int main(){

  	time_t t=time(NULL);
  	struct tm tm = *localtime(&t);

}

time_t 형태의 변수 t를 struct tm 구조체 값으로 변환하고localtime 함수는 구조체 포인터 값을 반환하기 떄문에struct tm tm =*localtime(&t)형태로 선언합니다.

struct tm {
   int tm_sec;   // 초
   int tm_min;   // 분        
   int tm_hour;  // 시      
   int tm_mday;  // 일        
   int tm_mon;   // 월        
   int tm_year;  // 년 ※1900년 부터의 년입니다.     
   int tm_wday;  // 요일    
   int tm_yday;  // 1년중 경과일 0~365     
   int tm_isdst; //      
};

struct 구조체의 내용은 다음과 같습니다 

예제 입력후에 결과값 받아보겠습니다

1. 년 월 일 시 분 초 입력받기

여기서 년은 +1900

월은 +1해야 현재 시간을 받아볼수있습니다.

이유는 년도는 1900년 이후 시간을 표시해주고

월은 구조체 안에 -1값으로 저장되어있기때문에

이점만 유의해서 출력하면됩니다!

#include<stdio.h>
#include<time.h>


int main() {
	time_t t = time(NULL);
	struct tm tm = *localtime(&t);

	printf("%d %d %d %d %d %d", tm.tm_year + 1900,   // 년도 1900년 이후 +1900
    	                          ,tm.tm_mon +1      // 월은 -1값 임으로 +1
                                  , tm.tm_mday       // 일
                                  , tm.tm_hour       // 시간
                                  , tm.tm_min        // 분
                                  , tm.tm_sec  );    // 초
	

}

코드는 가독성을 위해 이렇게 작성하였습니다

(이렇게 하면 오류납니다,,)

하하

2022년 11월 12일 15시 42분 44초 잘 출력되는걸 확인해볼수있습니다.

갑자기 든생각인데 시간을 AM PM형식으로 출력하려면 

어떤식으로해야할까요

#include<stdio.h>
#include<time.h>

int main() {
	time_t t = time(NULL);
	struct tm tm = *localtime(&t);

	char pm[3] = "PM"; // 오후
	char am[3] = "AM"; // 오전
	
	int n = 0;  //16시를 4시로 바꾸고 저장해줄 변수 n 선언
	if (13 <= tm.tm_hour && tm.tm_hour <= 23) { //13시 보다 크거나 23시보다 작을때 
		n= tm.tm_hour - 12;              //12를 빼주어야 1시~11시까지로 나타낼수있겠죠?
	}
	if (13 <= tm.tm_hour && tm.tm_hour <= 23) { // 오후는 13시부터 23시까지 잡았습니다
		printf("%s %d",pm,n); 
	}
	else {
		printf("%s %d",am,n); // 아니라면 오전으로 출력
	}

}

오후 4시라고 잘 나왔습니다.

(혹시 반례나 이상한게 있다면 얘기해주세요)

봐주셔서 감사합니다~!

사실 전역한지 얼마 안되어서 

16시 라고 이야기하는게 편하네요,,

+ Recent posts