준호씨의 블로그

perl - n일 전 날짜 구하기 본문

개발이야기

perl - n일 전 날짜 구하기

준호씨 2016. 11. 22. 23:08
반응형



time() 함수를 이용하면 epoch time 을 얻을 수 있다. 초 단위 이기 때문에 하루치의 초 (24 * 60 * 60) 만큼을 빼면 어제의 시간을 구할 수 있다.

아래의 get_date_ago(ago) 함수는 ago 일 전의 날짜를 yyyy-mm-dd 포멧의 문자열로 반환하는 함수이다.
#!/usr/bin/env perl

use strict;
use warnings;

use POSIX qw/strftime/;

sub get_date_ago {
    my $ago = shift;

    my $epoc = time();
    $epoc = $epoc - (24 * 60 * 60) * $ago;

    my $datestring = strftime "%F", localtime($epoc);

    return $datestring;
}

사용예는 다음과 같다.
for (my $i = 1; $i < 30; $i++) {
    my $date = get_date_ago($i);

    print $date."\n";
}

결과는 다음과 같이 나온다.
2016-11-21
2016-11-20
...
2016-11-02
2016-11-01
2016-10-31
2016-10-30
...
2016-10-25
2016-10-24

날짜 포멧을 yyyymmdd 로 바꾸고 싶으면 %F 대신 "%Y%m%d" 를 넣으면 된다.

참고
반응형
Comments