Monday, January 15, 2007
Perl/펄] 2자리수 년도 구하기, 두 자리 연도 출력; Two Digits Year
예를 들어 1985년을 85 로 표현하고, 2007년을 07로 2자리로 나타내는 방법입니다. "나머지 연산자"인 %(퍼센트 기호)를 사용하는 것입니다. 펄의 도움말에 있는 내용인데
perldoc -f localtime
이런 명령어로 아래와 같은 도움말이 나옵니다. 물론 컴퓨터에 펄(Perl)이 설치된 상태여야 하고, 윈도우의 경우 명령프롬프트(일명 도스창)에서 위의 명령을 실행하면 됩니다.
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
다음 예제는 현재의 년을 4자리와 2자리로 출력합니다.
파일명: 0.pl
출력 결과 화면:
(1번째는 컴퓨터 날짜를 1985년으로 거꾸로 돌린 후 출력한 것이고, 2번째는 현재 날짜에 맞추어 놓고 실행한 결과입니다.)
▶▶ Perl/펄] 오늘 날짜/현재 시간 구하기 함수, 년월일/시분초; Get Print Date Time Current
perldoc -f localtime
이런 명령어로 아래와 같은 도움말이 나옵니다. 물론 컴퓨터에 펄(Perl)이 설치된 상태여야 하고, 윈도우의 경우 명령프롬프트(일명 도스창)에서 위의 명령을 실행하면 됩니다.
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
D:\Z>perldoc -f localtime
localtime EXPR
localtime
Converts a time as returned by the time function to a 9-element
list with the time analyzed for the local time zone. Typically
used as follows:
# 0 1 2 3 4 5 6 7 8
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
All list elements are numeric, and come straight out of the C
`struct tm'. $sec, $min, and $hour are the seconds, minutes, and
hours of the specified time.
$mday is the day of the month, and $mon is the month itself, in
the range 0..11 with 0 indicating January and 11 indicating
December. This makes it easy to get a month name from a list:
my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec )
;
print "$abbr[$mon] $mday";
# $mon=9, $mday=18 gives "Oct 18"
$year is the number of years since 1900, not just the last two
digits of the year. That is, $year is 123 in year 2023. The
proper way to get a 4-digit year is simply:
$year += 1900;
Otherwise you create non-Y2K-compliant programs--and you
wouldn't want to do that, would you?
To get the last two digits of the year (e.g., '01' in 2001) do:
$year = sprintf("%02d", $year % 100);
$wday is the day of the week, with 0 indicating Sunday and 3
indicating Wednesday. $yday is the day of the year, in the range
0..364 (or 0..365 in leap years.)
$isdst is true if the specified time occurs during Daylight
Saving Time, false otherwise.
If EXPR is omitted, "localtime()" uses the current time (as
returned by time(3)).
In scalar context, "localtime()" returns the ctime(3) value:
$now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994"
This scalar value is not locale dependent but is a Perl builtin.
For GMT instead of local time use the "gmtime" builtin. See also
the "Time::Local" module (to convert the second, minutes, hours,
... back to the integer value returned by time()), and the POSIX
module's strftime(3) and mktime(3) functions.
To get somewhat similar but locale dependent date strings, set
up your locale environment variables appropriately (please see
perllocale) and try for example:
use POSIX qw(strftime);
$now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
# or for GMT formatted appropriately for your locale:
$now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
Note that the %a and %b, the short forms of the day of the week
and the month of the year, may not necessarily be three
characters wide.
See "localtime" in perlport for portability concerns.
The Time::gmtime and Time::localtime modules provides a
convenient, by-name access mechanism to the gmtime() and
localtime() functions, respectively.
For a comprehensive date and time representation look at the
DateTime module on CPAN.
D:\Z>
localtime EXPR
localtime
Converts a time as returned by the time function to a 9-element
list with the time analyzed for the local time zone. Typically
used as follows:
# 0 1 2 3 4 5 6 7 8
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
localtime(time);
All list elements are numeric, and come straight out of the C
`struct tm'. $sec, $min, and $hour are the seconds, minutes, and
hours of the specified time.
$mday is the day of the month, and $mon is the month itself, in
the range 0..11 with 0 indicating January and 11 indicating
December. This makes it easy to get a month name from a list:
my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec )
;
print "$abbr[$mon] $mday";
# $mon=9, $mday=18 gives "Oct 18"
$year is the number of years since 1900, not just the last two
digits of the year. That is, $year is 123 in year 2023. The
proper way to get a 4-digit year is simply:
$year += 1900;
Otherwise you create non-Y2K-compliant programs--and you
wouldn't want to do that, would you?
To get the last two digits of the year (e.g., '01' in 2001) do:
$year = sprintf("%02d", $year % 100);
$wday is the day of the week, with 0 indicating Sunday and 3
indicating Wednesday. $yday is the day of the year, in the range
0..364 (or 0..365 in leap years.)
$isdst is true if the specified time occurs during Daylight
Saving Time, false otherwise.
If EXPR is omitted, "localtime()" uses the current time (as
returned by time(3)).
In scalar context, "localtime()" returns the ctime(3) value:
$now_string = localtime; # e.g., "Thu Oct 13 04:54:34 1994"
This scalar value is not locale dependent but is a Perl builtin.
For GMT instead of local time use the "gmtime" builtin. See also
the "Time::Local" module (to convert the second, minutes, hours,
... back to the integer value returned by time()), and the POSIX
module's strftime(3) and mktime(3) functions.
To get somewhat similar but locale dependent date strings, set
up your locale environment variables appropriately (please see
perllocale) and try for example:
use POSIX qw(strftime);
$now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
# or for GMT formatted appropriately for your locale:
$now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
Note that the %a and %b, the short forms of the day of the week
and the month of the year, may not necessarily be three
characters wide.
See "localtime" in perlport for portability concerns.
The Time::gmtime and Time::localtime modules provides a
convenient, by-name access mechanism to the gmtime() and
localtime() functions, respectively.
For a comprehensive date and time representation look at the
DateTime module on CPAN.
D:\Z>
다음 예제는 현재의 년을 4자리와 2자리로 출력합니다.
2자리 년도 구하기 예제
파일명: 0.pl
#!/usr/bin/perl
use strict; use warnings;
my $year = (localtime)[5];
printf("%04d\n", $year + 1900);
printf("%02d\n", $year % 100);
use strict; use warnings;
my $year = (localtime)[5];
printf("%04d\n", $year + 1900);
printf("%02d\n", $year % 100);
출력 결과 화면:
(1번째는 컴퓨터 날짜를 1985년으로 거꾸로 돌린 후 출력한 것이고, 2번째는 현재 날짜에 맞추어 놓고 실행한 결과입니다.)
D:\Z>0.pl
1985
85
D:\Z>0.pl
2007
07
D:\Z>
1985
85
D:\Z>0.pl
2007
07
D:\Z>
▶▶ Perl/펄] 오늘 날짜/현재 시간 구하기 함수, 년월일/시분초; Get Print Date Time Current
tag: perl
Perl | 펄
<< Home