Tuesday, May 22, 2007
C언어] 세계 시간 시계, 타임존/시차 계산; World-Time Timezone
외국 도시의 현재 시각을 구하는 C소스입니다. 리얼타임 시계는 아니고, 실행할 때마다 갱신됩니다.
getWorldTime() 함수에 시차를 넣어주고, 결과가 저장될 문자열 버퍼 이름과 크기를 지정해 주면 됩니다.
한국과의 시차가 아니라, 세계표준시와의 시차입니다. 가령 미국 서부 LA는 겨울 빼고는 "태평양 표준시 PDT" 가 적용되는데, PDT는 세계표준시에서 즉 그리니치 천문대가 있는 곳에서 "마이너스 7시간"을 해주어야 합니다. 함수에 -7을 입력하면 됩니다.
다음 소스는 비주얼C 2005에서 만들어진 것이고, 비주얼C 2003 이하에서는 수정이 필요합니다.
소스 파일명: wt.cpp
실행 결과 화면:
▶▶ C언어] 현재 날짜/시간/년월일,시분초 구하기 함수(오늘 날짜 시간): Current Date, Time
getWorldTime() 함수에 시차를 넣어주고, 결과가 저장될 문자열 버퍼 이름과 크기를 지정해 주면 됩니다.
한국과의 시차가 아니라, 세계표준시와의 시차입니다. 가령 미국 서부 LA는 겨울 빼고는 "태평양 표준시 PDT" 가 적용되는데, PDT는 세계표준시에서 즉 그리니치 천문대가 있는 곳에서 "마이너스 7시간"을 해주어야 합니다. 함수에 -7을 입력하면 됩니다.
다음 소스는 비주얼C 2005에서 만들어진 것이고, 비주얼C 2003 이하에서는 수정이 필요합니다.
외국 도시 시차 계산, 현재 시각 구하기 예제 소스
소스 파일명: wt.cpp
#include <stdio.h>
#include <time.h>
// 한국 시간은 UTC +9 이므로
#define CURRENT_TIMEZONE_OFFSET +9
void getWorldTime(int tzOffset, char* buffer, size_t bufferSize);
int main(void) {
char buf[80];
getWorldTime(+9, buf, sizeof(buf));
printf("KST (한국 표준시) : %s\n\n", buf);
getWorldTime(-8, buf, sizeof(buf));
printf("PST (태평양 표준시) : %s\n", buf);
getWorldTime(-7, buf, sizeof(buf));
printf("PDT (태평양 표준시 DST) : %s\n\n", buf);
getWorldTime(-5, buf, sizeof(buf));
printf("EST (뉴욕 시간) : %s\n", buf);
getWorldTime(-4, buf, sizeof(buf));
printf("EDT (뉴욕 시간 DST) : %s\n\n", buf);
getWorldTime(+1, buf, sizeof(buf));
printf("CET (파리 시간) : %s\n", buf);
getWorldTime(+2, buf, sizeof(buf));
printf("CEST (파리 시간 DST) : %s\n\n", buf);
getWorldTime(+8, buf, sizeof(buf));
printf("CST (중국 표준시) : %s\n\n", buf);
getWorldTime(0, buf, sizeof(buf));
printf("UTC (세계 표준시) : %s\n\n", buf);
return 0;
}
// 비주얼 C++ 2005 에서 작동
void getWorldTime(int tzOffset, char* buffer, size_t bufferSize) {
time_t timer;
struct tm t;
timer = time(NULL); // 현재 시각을 초 단위로 얻기
timer -= CURRENT_TIMEZONE_OFFSET * 3600;
timer += tzOffset * 3600;
localtime_s(&t, &timer); // 초 단위의 시간을 분리하여 구조체에 넣기
sprintf_s(buffer, bufferSize, "%04d-%02d-%02d %02d:%02d:%02d",
t.tm_year + 1900,
t.tm_mon + 1,
t.tm_mday,
t.tm_hour,
t.tm_min,
t.tm_sec);
}
#include <time.h>
// 한국 시간은 UTC +9 이므로
#define CURRENT_TIMEZONE_OFFSET +9
void getWorldTime(int tzOffset, char* buffer, size_t bufferSize);
int main(void) {
char buf[80];
getWorldTime(+9, buf, sizeof(buf));
printf("KST (한국 표준시) : %s\n\n", buf);
getWorldTime(-8, buf, sizeof(buf));
printf("PST (태평양 표준시) : %s\n", buf);
getWorldTime(-7, buf, sizeof(buf));
printf("PDT (태평양 표준시 DST) : %s\n\n", buf);
getWorldTime(-5, buf, sizeof(buf));
printf("EST (뉴욕 시간) : %s\n", buf);
getWorldTime(-4, buf, sizeof(buf));
printf("EDT (뉴욕 시간 DST) : %s\n\n", buf);
getWorldTime(+1, buf, sizeof(buf));
printf("CET (파리 시간) : %s\n", buf);
getWorldTime(+2, buf, sizeof(buf));
printf("CEST (파리 시간 DST) : %s\n\n", buf);
getWorldTime(+8, buf, sizeof(buf));
printf("CST (중국 표준시) : %s\n\n", buf);
getWorldTime(0, buf, sizeof(buf));
printf("UTC (세계 표준시) : %s\n\n", buf);
return 0;
}
// 비주얼 C++ 2005 에서 작동
void getWorldTime(int tzOffset, char* buffer, size_t bufferSize) {
time_t timer;
struct tm t;
timer = time(NULL); // 현재 시각을 초 단위로 얻기
timer -= CURRENT_TIMEZONE_OFFSET * 3600;
timer += tzOffset * 3600;
localtime_s(&t, &timer); // 초 단위의 시간을 분리하여 구조체에 넣기
sprintf_s(buffer, bufferSize, "%04d-%02d-%02d %02d:%02d:%02d",
t.tm_year + 1900,
t.tm_mon + 1,
t.tm_mday,
t.tm_hour,
t.tm_min,
t.tm_sec);
}
실행 결과 화면:
D:\Z>cl wt.cpp && wt.exe
wt.cpp
KST (한국 표준시) : 2007-05-22 13:53:28
PST (태평양 표준시) : 2007-05-21 20:53:28
PDT (태평양 표준시 DST) : 2007-05-21 21:53:28
EST (뉴욕 시간) : 2007-05-21 23:53:28
EDT (뉴욕 시간 DST) : 2007-05-22 00:53:28
CET (파리 시간) : 2007-05-22 05:53:28
CEST (파리 시간 DST) : 2007-05-22 06:53:28
CST (중국 표준시) : 2007-05-22 12:53:28
UTC (세계 표준시) : 2007-05-22 04:53:28
D:\Z>
wt.cpp
KST (한국 표준시) : 2007-05-22 13:53:28
PST (태평양 표준시) : 2007-05-21 20:53:28
PDT (태평양 표준시 DST) : 2007-05-21 21:53:28
EST (뉴욕 시간) : 2007-05-21 23:53:28
EDT (뉴욕 시간 DST) : 2007-05-22 00:53:28
CET (파리 시간) : 2007-05-22 05:53:28
CEST (파리 시간 DST) : 2007-05-22 06:53:28
CST (중국 표준시) : 2007-05-22 12:53:28
UTC (세계 표준시) : 2007-05-22 04:53:28
D:\Z>
▶▶ C언어] 현재 날짜/시간/년월일,시분초 구하기 함수(오늘 날짜 시간): Current Date, Time
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home