Пытаюсь использовать DateTime. В чем дело? - PullRequest
2 голосов
/ 01 июля 2011

Я пытаюсь получить DateTime на текущую дату в формате %d/%m-%Y', но я получаю undef.

Что я делаю не так?

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

use DateTime ();
use DateTime::Format::Strptime;

my $now   = DateTime->now;

my $p = DateTime::Format::Strptime->new(
    pattern     => '%d/%m-%Y',
    time_zone   => 'UTC',
    );

my $dt = $p->parse_datetime($now);

print Dumper $dt;

Ответы [ 2 ]

4 голосов
/ 01 июля 2011

Это можно записать так просто:

#!/usr/bin/env perl

use strict;
use warnings;

use DateTime ();

my $now = DateTime->now( 'time_zone' => 'UTC' );
print $now->strftime('%d/%m-%Y');
3 голосов
/ 01 июля 2011

Обычно средства форматирования DateTime анализируют строку и форматируют строку из объекта DateTime. -> parse_datetime выдаст вам объект DateTime из строки, а -> format_datetime предоставит вам строку из объекта DateTime. Если у вас есть форматер, который вы хотите использовать как для десериализации, так и для повторной сериализации дат, вы можете использовать его несколькими различными способами:

use strict;
use warnings;
use Data::Dumper;

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

use 5.012;

my $now = DateTime->now(time_zone => 'local');
say $now; ### '2011-07-01T08:22:03' - converted to string with default formatter

my $p = DateTime::Format::Strptime->new(
    pattern     => '%d/%m-%Y',
    time_zone   => 'UTC',
    );
say $p->format_datetime($now); ### use the parser against a DateTime
                               ### '01/07-2011'

$now->set_formatter($p); ### Set the parser as the default string 
                         ### formatter for the DateTime object
say $now; ### '01/07-2011' -- from formatter

### Or set it at object construction
my $now2 = DateTime->now( time_zone => 'local',
                          formatter => $p,
                        );
say $now2; ### '01/07-2011' - from formatter
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...