3.7 文字列を解析して日付と時刻を取得する

任意のフォーマットで指定された日付、時刻を、年、月などを単位とした個々の値に変換したい。

# 方法1
use Time::Local;
# $dateには、YYYY-MM-DD形式の値(例えば2003-02-13)が格納されている
($yyyy, $mm, $dd) = ($date =~ /(\d+)-(\d+)-(\d+)/);
# 抽出した日付をエポック秒に変換
$epoch_seconds = timelocal(0, 0, 0, $dd, $mm-1, $yyyy);

# 方法2
use Date::Manip qw(ParseDate UnixDate);
$date = ParseDate($STRING);
if (!$date) {
  # 日付が有効でない場合
} else {
  @VALUES = UnixDate($date, @FORMATS);
}