Tuesday, May 22, 2007
Perl 펄] 세계 시간 시계, 타임존/시차 계산; World-Time Timezone
펄에서 외국 도시의 현재 시각을 구하는 방법입니다. CPAN 모듈이 있긴 하지만 사용법이 너무 복잡해서 간단한 것을 직접 만들었습니다. 펄에서 이런 함수를 기본적으로 제공하지 않기에, 시차를 직접 계산해야 합니다.
아래의 getWorldTime 함수에 시차를 넣어주면 됩니다. 외국도시와 한국의 시차가 아니라, "외국 도시의 시간과 세계표준시 사이의 시차"입니다.
미국 서부의 LA는 겨울에는 "태평양 표준시 PST"를 사용하고, 그 외의 계절에는 서머타임이 적용되어 "태평양 표준시 PDT"를 사용합니다. 이 글을 쓰고 있는 지금 현재(2007-05-22) 미국 서부는 PDT가 적용되고 있습니다.
PST 는 세계표준시에서 8시간을 마이너스해야 하고, PDT는 마이너스 7을 해야 합니다. 함수 안에 이 시차를 넣어주면 됩니다.
파일명: example.pl
실행 결과 화면:
▶▶ Perl/펄] 오늘 날짜/현재 시간 구하기 함수, 년월일/시분초; Get Print Date Time Current
아래의 getWorldTime 함수에 시차를 넣어주면 됩니다. 외국도시와 한국의 시차가 아니라, "외국 도시의 시간과 세계표준시 사이의 시차"입니다.
미국 서부의 LA는 겨울에는 "태평양 표준시 PST"를 사용하고, 그 외의 계절에는 서머타임이 적용되어 "태평양 표준시 PDT"를 사용합니다. 이 글을 쓰고 있는 지금 현재(2007-05-22) 미국 서부는 PDT가 적용되고 있습니다.
PST 는 세계표준시에서 8시간을 마이너스해야 하고, PDT는 마이너스 7을 해야 합니다. 함수 안에 이 시차를 넣어주면 됩니다.
외국 현재 시각 구하기 예제 소스
파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;
printf("KST (한국 표준시) : %s\n\n", getWorldTime(+9));
printf("PST (태평양 표준시) : %s\n", getWorldTime(-8));
printf("PDT (태평양 표준시 DST) : %s\n\n", getWorldTime(-7));
printf("EST (뉴욕 시간) : %s\n", getWorldTime(-5));
printf("EDT (뉴욕 시간 DST) : %s\n\n", getWorldTime(-4));
printf("CET (파리 시간) : %s\n", getWorldTime(+1));
printf("CEST (파리 시간 DST) : %s\n\n", getWorldTime(+2));
printf("CST (중국 표준시) : %s\n\n", getWorldTime(+8));
printf("UTC (세계 표준시) : %s\n\n", getWorldTime(0));
sub getWorldTime { # 24시간제
my $now = time + ($_[0] * 3600);
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime($now);
sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year + 1900, $mon + 1, $mday, $hour, $min, $sec);
}
use strict; use warnings;
printf("KST (한국 표준시) : %s\n\n", getWorldTime(+9));
printf("PST (태평양 표준시) : %s\n", getWorldTime(-8));
printf("PDT (태평양 표준시 DST) : %s\n\n", getWorldTime(-7));
printf("EST (뉴욕 시간) : %s\n", getWorldTime(-5));
printf("EDT (뉴욕 시간 DST) : %s\n\n", getWorldTime(-4));
printf("CET (파리 시간) : %s\n", getWorldTime(+1));
printf("CEST (파리 시간 DST) : %s\n\n", getWorldTime(+2));
printf("CST (중국 표준시) : %s\n\n", getWorldTime(+8));
printf("UTC (세계 표준시) : %s\n\n", getWorldTime(0));
sub getWorldTime { # 24시간제
my $now = time + ($_[0] * 3600);
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = gmtime($now);
sprintf("%04d-%02d-%02d %02d:%02d:%02d", $year + 1900, $mon + 1, $mday, $hour, $min, $sec);
}
실행 결과 화면:
D:\Z>example.pl
KST (한국 표준시) : 2007-05-22 11:45:43
PST (태평양 표준시) : 2007-05-21 18:45:43
PDT (태평양 표준시 DST) : 2007-05-21 19:45:43
EST (뉴욕 시간) : 2007-05-21 21:45:43
EDT (뉴욕 시간 DST) : 2007-05-21 22:45:43
CET (파리 시간) : 2007-05-22 03:45:43
CEST (파리 시간 DST) : 2007-05-22 04:45:43
CST (중국 표준시) : 2007-05-22 10:45:43
UTC (세계 표준시) : 2007-05-22 02:45:43
D:\Z>
KST (한국 표준시) : 2007-05-22 11:45:43
PST (태평양 표준시) : 2007-05-21 18:45:43
PDT (태평양 표준시 DST) : 2007-05-21 19:45:43
EST (뉴욕 시간) : 2007-05-21 21:45:43
EDT (뉴욕 시간 DST) : 2007-05-21 22:45:43
CET (파리 시간) : 2007-05-22 03:45:43
CEST (파리 시간 DST) : 2007-05-22 04:45:43
CST (중국 표준시) : 2007-05-22 10:45:43
UTC (세계 표준시) : 2007-05-22 02:45:43
D:\Z>
▶▶ Perl/펄] 오늘 날짜/현재 시간 구하기 함수, 년월일/시분초; Get Print Date Time Current
tag: perl
Perl | 펄
<< Home