반응형
앞에것을 보았다면 기본적인 상식 차원의 내용은 이해 했을것이다.
그러면 컴퓨터는 어떻게 달력을 계산하는지 알아 보자.
사실 요것도 공부하다 보면 할것이 많다.
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 |
댓글