• ベストアンサー

PHPのstrtotimeのようなものありますか?

「2011/08/01(日)」という文字列が現在の時間より過去か未来かの 判断をしたいと思います。 PHPだと、 $yukou_time = strtotime("2011/08/01(日)"); $now_time = time(); if( $yukou_time > $now_time ) という感じでできたのですが、perlの場合、PHPのstrtotimeのような ものを見つけることができません。 お手数ですが、このような機能がありましたらおしえてください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

文字列からの変換はできませんが、timelocal で年月日→エポックの変換は可能です。 use Time::Local; my ($year, $mon, $mday) = ("2011/08/01(日)" =~ /\d{4}\/\d{1,2}\/\d{1,2}/); my $yukou_time = timelocal(0, 0, 0, $mday, $mon - 1, $year);

haruyutaka
質問者

補足

ありがとうございます。 my ($year, $mon, $mday) = ("2011/08/01" =~ /(\d{4})\/(\d{1,2})\/(\d{1,2})/); 教えて頂いたコードだと日付がうまく取れませんでした。 カッコをつけたら日付が取れましたが、これでよいのでしょうか?

その他の回答 (1)

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

> my ($year, $mon, $mday) = ("2011/08/01" =~ /(\d{4})\/(\d{1,2})\/(\d{1,2})/); > 教えて頂いたコードだと日付がうまく取れませんでした。 > カッコをつけたら日付が取れましたが、これでよいのでしょうか? すみません、そらで書いたコードなので間違えてました。これで問題ないです。 timelocalはlocaltimeの逆の関数なので、月は0~11になるため、1引く必要がある点だけ注意してください。

haruyutaka
質問者

お礼

ありがとうございます。よくわかりました。

関連するQ&A