준호씨의 블로그
perl - yyyy-mm-dd hh:mm:ss 만들기. yyyymmddhhmmss 본문
yyyy-mm-dd hh:mm:ss
Time::Piece 로 localtime 에 strftime 함수 추가해서 사용하기
use Time::Piece;
print localtime->strftime('%F %T');
Time::Piece 모듈을 사용하게 되면 localtime 에 strftime 함수가 오버라이드 된다. Time::Piece 모듈은 Perl 5.10 부터 기본 모듈로 들어가 있다. 만약 없다면 cpan 으로 설치 해 주면 된다.
cpan Time::Piece
Time::Piece 관련 릴리즈노트
5.8 에서 Time::Piece (이전에는 Time::Object) 가 제거 됨 https://perldoc.perl.org/perl58delta.html
5.10 에 Time::Piece 가 다시 추가 됨 https://perldoc.perl.org/perl5100delta.html
POSIX strftime 이용
use POSIX;
print strftime "%F %T", localtime
간단하다 POSIX 의 strftime 함수로 localtime 의 포멧을 변경하면 된다.
shell 커맨드 한줄로 출력하기
$ perl -MPOSIX -le 'print strftime "%F %T", localtime'
2017-10-02 10:37:13
만약 프로그램이 시작 했을 때의 시간을 출력 하려면 다음과 같이 한다. localtime 뒤에 $^T 를 추가 했다.
$ perl -MPOSIX -le 'print strftime "%F %T", localtime $^T'
2017-10-02 10:35:56
차이를 알아 보려면 다음과 같이 테스트 해 볼 수 있다. 첫번째 예제는 $^T 를 안넣어서 5초 뒤에 5초 뒤의 시간이 나왔고, 두번째 예제에서는 $^T 를 넣어서 시작할때 찍었던 시간과 종료 할 때 찍은 시간이 동일함을 볼 수 있다.
$ date +'%F %T';perl -MPOSIX -le 'sleep 5;print strftime "%F %T", localtime'
2017-10-02 10:40:18
2017-10-02 10:40:23
$ date +'%F %T';perl -MPOSIX -le 'sleep 5;print strftime "%F %T", localtime $^T'
2017-10-02 10:41:31
2017-10-02 10:41:31
참고로 그냥 $^T 를 찍어 보면 다음과 같다.
$ perl -e 'print $^T'
1506908639
해당 값은 epoch 이다. (seconds since 1970-01-01 00:00:00 UTC)
$ date +%s
1506908707
$ date --help
...
%s seconds since 1970-01-01 00:00:00 UTC
yyyymmddhhmmss
sub get_current {
my $epoc = time();
my $datestring = strftime "%Y%m%d%H%M%S", localtime($epoc);
return $datestring;
}
참고
Quickly getting to YYYY-mm-dd HH:MM:SS in Perl https://stackoverflow.com/questions/1814196/quickly-getting-to-yyyy-mm-dd-hhmmss-in-perl
localtime https://perldoc.perl.org/functions/localtime.html
Time::Piece http://perldoc.perl.org/Time/Piece.html
'개발이야기' 카테고리의 다른 글
shell 프롬프트에 git branch 표시하기. git 커맨드 자동완성 (0) | 2017.10.02 |
---|---|
rsh -> ssh 변경 가이드 (0) | 2017.10.02 |
ssh known_hosts 등록. 처음 접속하는 호스트 yes/no 이슈 해결 (0) | 2017.10.01 |
python - dictionary 의 key, value 를 출력 하는 방법. dictionary loop (2) | 2017.10.01 |
git commit 대신 ci - alias 기능 으로 타이핑 줄이기 (0) | 2017.09.27 |