Saturday, July 22, 2006
Perl / 펄] 펄로, 현재 날짜(연월일)와 시분초 쉽게 다루는 서브루틴: GetTimeStr
펄이든 무슨 언어이든, 날짜와 시간을 처리하는 부분이 번거롭습니다.
제가 어제 날짜에 관계된 펄 프로그래밍을 하려고 했는데, localtime 을 해석하는 부분이 좀 복잡하더군요.
그래서 아예, "Y" 를 넣으면 현재 연도가 나오고, "h" 를 넣으면 현재 시간이 나오는 아주 단순명쾌한 함수를 하나 만들었습니다.
GetTimeStr 이라는 함수입니다.
봉숭아학당에서도 사용할 수 있을 만큼 사용법이 간단합니다.
펄 코드:
GetTimeStr("Y") 는 현재 연도를 4자리 숫자로 반환
GetTimeStr("M") 은 현재 달을 2자리 숫자로 반환
GetTimeStr("D") 는 현재 일을 2자리 숫자로 반환
GetTimeStr("h") 는 현재 시간을 2자리 숫자로 반환
GetTimeStr("m") 은 현재 분을 2자리 숫자로 반환
GetTimeStr("s") 는 현재 초를 2자리 숫자로 반환
주의: 대소문자를 구분합니다. 대문자 M 은 '달'이고, 소문자 m 은 '분'입니다.
undef; 라는 부분은, 옵션을 잘못 주었을 때 undef 라는 값을 반환하라는 의미입니다. undef 는 논리적으로는 거짓이고, 숫자도 문자열도 아닌 특수한 값입니다. 변수를 만든 후 아무것도 대입하지 않았다면 undef 라는 값을 가지게 됩니다. 다만 숫자를 계산하는 곳에서는 0처럼 행동하고, 문자열을 다루는 곳에서는 빈 문자열 즉 ""처럼 행동합니다.
여기서는, 에러가 났다는 의미로 undef 를 반환했습니다. 별로 중요한 부분은 아니고, 없어도 되는 코드입니다.
실행 결과:
▶▶ Perl/펄] 어제 날짜 구하기, 전날 날짜 알아내기; Yesterday Date
▶▶ Perl/펄] 오늘 날짜/현재 시간 구하기 함수, 년월일/시분초; Get Print Date Time Current
제가 어제 날짜에 관계된 펄 프로그래밍을 하려고 했는데, localtime 을 해석하는 부분이 좀 복잡하더군요.
그래서 아예, "Y" 를 넣으면 현재 연도가 나오고, "h" 를 넣으면 현재 시간이 나오는 아주 단순명쾌한 함수를 하나 만들었습니다.
GetTimeStr 이라는 함수입니다.
봉숭아학당에서도 사용할 수 있을 만큼 사용법이 간단합니다.
펄 코드:
#!/usr/bin/perl
use strict; use warnings;
print "Year : ", &GetTimeStr("Y"), "\n";
print "Month : ", &GetTimeStr("M"), "\n";
print "Day : ", &GetTimeStr("D"), "\n";
print "\n";
print "Hour : ", &GetTimeStr("h"), "\n";
print "Min : ", &GetTimeStr("m"), "\n";
print "Sec : ", &GetTimeStr("s"), "\n";
sub GetTimeStr {
return sprintf("%02d", (localtime) [0] ) if $_[0] eq "s";
return sprintf("%02d", (localtime) [1] ) if $_[0] eq "m";
return sprintf("%02d", (localtime) [2] ) if $_[0] eq "h";
return sprintf("%02d", (localtime) [3] ) if $_[0] eq "D";
return sprintf("%02d", (localtime) [4] + 1 ) if $_[0] eq "M";
return sprintf("%04d", (localtime) [5] + 1900) if $_[0] eq "Y";
undef;
}
use strict; use warnings;
print "Year : ", &GetTimeStr("Y"), "\n";
print "Month : ", &GetTimeStr("M"), "\n";
print "Day : ", &GetTimeStr("D"), "\n";
print "\n";
print "Hour : ", &GetTimeStr("h"), "\n";
print "Min : ", &GetTimeStr("m"), "\n";
print "Sec : ", &GetTimeStr("s"), "\n";
sub GetTimeStr {
return sprintf("%02d", (localtime) [0] ) if $_[0] eq "s";
return sprintf("%02d", (localtime) [1] ) if $_[0] eq "m";
return sprintf("%02d", (localtime) [2] ) if $_[0] eq "h";
return sprintf("%02d", (localtime) [3] ) if $_[0] eq "D";
return sprintf("%02d", (localtime) [4] + 1 ) if $_[0] eq "M";
return sprintf("%04d", (localtime) [5] + 1900) if $_[0] eq "Y";
undef;
}
GetTimeStr("Y") 는 현재 연도를 4자리 숫자로 반환
GetTimeStr("M") 은 현재 달을 2자리 숫자로 반환
GetTimeStr("D") 는 현재 일을 2자리 숫자로 반환
GetTimeStr("h") 는 현재 시간을 2자리 숫자로 반환
GetTimeStr("m") 은 현재 분을 2자리 숫자로 반환
GetTimeStr("s") 는 현재 초를 2자리 숫자로 반환
주의: 대소문자를 구분합니다. 대문자 M 은 '달'이고, 소문자 m 은 '분'입니다.
undef; 라는 부분은, 옵션을 잘못 주었을 때 undef 라는 값을 반환하라는 의미입니다. undef 는 논리적으로는 거짓이고, 숫자도 문자열도 아닌 특수한 값입니다. 변수를 만든 후 아무것도 대입하지 않았다면 undef 라는 값을 가지게 됩니다. 다만 숫자를 계산하는 곳에서는 0처럼 행동하고, 문자열을 다루는 곳에서는 빈 문자열 즉 ""처럼 행동합니다.
여기서는, 에러가 났다는 의미로 undef 를 반환했습니다. 별로 중요한 부분은 아니고, 없어도 되는 코드입니다.
실행 결과:
D:\Z>0.pl
Year : 2006
Month : 07
Day : 21
Hour : 19
Min : 49
Sec : 20
D:\Z>
Year : 2006
Month : 07
Day : 21
Hour : 19
Min : 49
Sec : 20
D:\Z>
▶▶ Perl/펄] 어제 날짜 구하기, 전날 날짜 알아내기; Yesterday Date
▶▶ Perl/펄] 오늘 날짜/현재 시간 구하기 함수, 년월일/시분초; Get Print Date Time Current
tag: perl
Perl | 펄
저도 그런 적이 자주 있었는데 이상하게도 오늘은 괜찮습니다.
지메일 쪽이 아닌 블로거의 문제인 것 같기도 합니다. 블로거 서버가 일시적으로 다운이 된 것이 아닐까 하고 추측합니다.
늦게 오는 경우도 있지만 아예 안오는 경우도 있어서 곤혹스럽더군요..
그리고 mwultong 의 발음은 물통 맞습니다. ^^
(∩_∩)
코멘트 블로그가 몇 시간이 지나도 업데이트가 되지 않는 걸 보니 역시 오늘 문제가 있습니다..
(+_+;
랄라라님의 코멘트:
* 물통님. 요즘 이메일 포스팅 기능이 좀 이상하지 않습니까? 제가 이걸 이용해서 코멘트 로그를 쓰고 있는데, 요즘 최신 코멘트를 잘 알려주지 못하고 있더군요.
Gmail의 전달 기능에 문제가 생긴건지, 혹은 이메일 포스팅 기능에 문제가 생긴건지 모르겠지만 좀 답답합니다. mwultong님의 코멘트 로그는 별 문제 없는지요?
예전에는 메일로 오는 코멘트들은 거의 다 자동으로 코멘트 로그에 포스팅되어서 불편함을 느끼지 못했는데, 요즘은 답답합니다.
근데 mwultong을 물통이라고 읽는게 맞는지 모르겠군요. 잘못 읽었다면 죄송합니다;;
(새 블로거 버전에서는, 랄라라님의 한글 아이디 글자가 깨져서, 다시 올립니다.)
<< Home