본문 바로가기
아두이노

아두이노와 달력 - #3

by 오징어땅콩2 2020. 3. 5.
반응형

앞에것을 보았다면 기본적인 상식 차원의 내용은 이해 했을것이다.
그러면 컴퓨터는 어떻게 달력을 계산하는지 알아 보자.
사실 요것도 공부하다 보면 할것이 많다.

C언어세서의  time_t와 time 함수를 이해 해야한다.
1900년 부터 몇 초나 지났는지에 대한 값이다.
간혹 1900년하고 1970년이라고 하는데 지금은 1900년 인것 같다


왜 1900년 하고 1970넌 일까 ? 
생각하면 이전의 달력은 1년이 꼭 12달도 아니고, 들쑥 날쑥해서 어차피 계산해도 맞지 않다.

 

#include <stdio.h>
#include <time.h>
 
int main ()
{
    time_t time;
 
    time (&time);
 
    printf("1900년 부터 몇 초나 지났나 : %d 초 \n", time);
 
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

2. gmtime(), localtime()의 이해
time_t가 초단위 이기 때문에 우리가 사용하기에 적절하지 않으므로
사용하기 편한 tm 포멧으로 변환해주는 함수이다.
두함수의 차이는 이름만 보면 알수 있다. UTC기준으로 차이때문이다.

 

 

 

3. mktime()의 이해
gmtime(), localtime()함수와 반대로 다시 time_t포멧으로 변경해 주는 함수이다.
일부 블로거나 사이트에서 시간을 만들어 주고 가져오는 함수로 잘못 설명하고 있는데,
시간의 포멧형식을 바꾸어 주는 함수 이다.

 

#include <stdio.h>
#include <time.h>
 
int main(int argc, char** argv)
{
 struct tm* pLocalTime;
 time_t Time; 
 time(&Time);
 
 printf("1900년 부터 몇 초나 지났나 : %d 초 \n", Time);
  
 pLocalTime = localtime(&Time);
 
 pLocalTime->tm_year += 1900;
 pLocalTime->tm_mon  += 1;
 pLocalTime->tm_mday += 0;
 pLocalTime->tm_hour += 0;
 pLocalTime->tm_min  += 0;
 pLocalTime->tm_sec  += 0;
 pLocalTime->tm_wday += 0;
 
 
 
 
 printf("현재 년   : %d년\n", pLocalTime->tm_year );
 printf("현재 월   : %d월\n", pLocalTime->tm_mon );
 printf("현재 일   : %d일\n", pLocalTime->tm_mday);
 printf("현재 시간 : %d시\n", pLocalTime->tm_hour);
 printf("현재 분   : %d분\n", pLocalTime->tm_min);
 printf("현재 초   : %d초\n", pLocalTime->tm_sec);
 printf("현재 요일 : %d(0 일요일 ~ 6 토요일)\n\n", pLocalTime->tm_wday);
  
 return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

'아두이노' 카테고리의 다른 글

아두이노와 달력 - #5  (0) 2020.03.05
아두이노와 달력 - #4  (0) 2020.03.05
아두이노와 달력 - #2  (0) 2020.03.01
아두이노와 달력 - #1  (0) 2020.03.01
아두이노 Serial MP3 모듈 -#4  (0) 2020.02.23

댓글