-1

データ文字列で strftime を使用しようとしています:

my $date = '2013-10-31 13:55';
my $new_date = $date->strftime('%Y-%m-%d %H:%M:%S');

しかし、私はいつもエラーが発生します

 "Can't call method "strftime" without a package or object reference"

これについて私ができることを提案してください

4

3 に答える 3

1

日付をあるフォーマットから別のフォーマットに変換するには、通常、元の表現をその部分に解析してから、それらを目的の表現にフォーマットします。ただし、この場合に欠けているのは秒だけなので、必要なのは次のとおりです。

 my $new_date = $date . ':00';
于 2013-10-01T18:44:06.423 に答える
1

あなたの例で$dateは、オブジェクトではなくスカラーです。メソッドがありませんstrftime(したがって、パッケージまたはオブジェクトの参照がないというエラーが表示されます)。池上が言ったように、文字列に秒を追加するだけの場合は、.演算子を追加してください。ナッツを割るのにハンマーを使わないでください。

フォーマットにそれほど重要でないことをしている場合は、 DateTimeDateTime::Format::Strptimeを使用して次のようなことを行うことができます。

    use DateTime;
    use DateTime::Format::Strptime;

    my $date = '2013-10-31 13:55';
    my $parser = DateTime::Format::Strptime->new(pattern => '%Y-%m-%d %H:%M');

    # Parse string into a DateTime object
    my $dt = $parser->parse_datetime($date);

    # Print DateTime object with a custom format
    print $dt->strftime('%a, %d %b %Y %H:%M:%S %z');
    # Thu, 31 Oct 2013 13:55:00 +0000
于 2013-10-01T19:36:33.150 に答える