Perlプログラムに関する各種メモ書き

今日の日付(現在時刻)を求める関数

■ DateTime

use DateTime;
my $dt = DateTime->today;
print $dt->ymd;
print $dt->add(months => +1)->ymd;

■ Time::Piece (内部でDatetimeがrequireされているもよう)

http://d.hatena.ne.jp/naoya/20051031/1130710931

#!/usr/local/bin/perl
use strict;
use warnings;
use Time::Piece;
my $lt = localtime;
printf "%s %s?n", $lt->ymd('/'), $lt->hms;

■ Date::Pcalc

Perlしか使えない環境なら(Pure Perl)モジュールを使用する

使いやすくもあるので個人的にはおすすめ。

use Date::Pcalc;
my($t_year,$t_month,$t_day) = &Date::Pcalc::Today();
my($hour,$min,$sec) = &Date::Pcalc::Now();
my($year,$month,$day, $hour,$min,$sec) = &Date::Pcalc::Today_and_Now();
my $datetime=sprintf("%04d%02d%02d%02d%02d%02d",$year,$month,$day, $hour,$min,$sec);

ある日(2008/12/10)の2ヶ月後の日付を求めるには

my($t_year,$t_month,$t_day) = &Date::Pcalc::Add_Delta_YMD(2008,12,10, 0,2,0);

ある日(2008/12/10)の60日後の日付を求めるには

my($t_year,$t_month,$t_day) = &Date::Pcalc::Add_Delta_YMD(2008,12,10, 0,0,60);

曜日の数字を求めるには・・・・・

my $dow = &Date::Pcalc::Day_of_Week(&Date::Pcalc::Today()); #1〜7の数が返る
my $dow = &Date::Pcalc::Day_of_Week($year,$month,$day);
my $youbi = ('dummy', '月', '火', '水', '木', '金', '土', '日' )[$dow]; # 曜日を取得

日付の比較(どちらの日付が古いか?)を行うには

my $days = Date_to_Days($year,$month,$day)
my $days2 = Date_to_Days($year2,$month2,$day2)
if ( $days < $days2 ){
    'days2の方が新しい日付です';
}

Date::Pcalcのマニュアル↓

http://search.cpan.org/dist/Date-Pcalc/Pcalc.pm


■ Date::Simple (非XS環境では自動的にpureperl版を呼び出すもよう?)

文字通り超シンプルでわかりやすい。

http://search.cpan.org/search?query=date%3A%3ASimple+&mode=all

日本語訳:http://perldoc.jp/docs/modules/Date-Simple-2.03/Simple.pod

use Date::Simple;
my $today = Date::Simple->new();
my $tommorow  = $today->next;
my $yesterday = $today->prev;
# 曜日の出力
print(('Sun','Mon','Tues','Wednes','Thurs','Fri','Satur')[$today->day_of_week]);

ただし

Date::Simpleは、時分秒、時間帯は取り扱いません。

です。


No.27
08/23 20:12

edit