1

「期間」オプションを使用する perl スクリプトを作成していますが、単一の単位 (秒数など) だけを使用するのではなく、この期間をかなり柔軟な方法で指定できるようにしたいと考えています。UNIXatコマンドは、「現在 + 3 時間 + 2 日」などの指定を許可することで、この種の動作を実装します。私のプログラムでは、「今」の部分が暗示されているので、プラス記号の後の部分を解析したいだけです。(注: このatコマンドは正確な日付指定も解析しますが、期間のみを解析したいのです。)

このような期間指定を解析するための perl モジュールはありますか? で受け入れられる正確な構文は必要ありませんat。期間を指定するための適切な構文だけです。


編集: 基本的に、日付の代わりに期間にDateTime::Format::Flexibleのようなものが必要です。

4

3 に答える 3

2

DateTime::DurationDateTime::Format::Durationを見てください:

use DateTime::Duration;
use DateTime::Format::Duration;

my $formatter = DateTime::Format::Duration->new(
        pattern => '%e days, %H hours'
);

my $dur = $formatter->parse_duration('2 days, 5 hours');
my $dt = DateTime->now->add_duration($dur);
于 2010-06-04T20:20:39.623 に答える
0

私はTime::Duration::Parseで行くことになりました。

于 2010-06-06T16:13:39.107 に答える
0

Time::ParseDateには、相対時間に対する非常に柔軟な構文があります。常に絶対時間を返すため、「現在 + 3 時間 + 2 日」と「3 時間 + 2 日」の違いがわからないことに注意してください (どちらも への有効な入力parsedateであり、同じ値を返します)。 )。time代わりに期間を取得したい場合は、減算できます。

また、 DateTimeオブジェクトは返されず、UNIX エポック タイムのみが返されます。それがあなたのアプリケーションの問題かどうかはわかりません。

于 2010-06-05T08:19:16.807 に答える