Вычитание двух дат с помощью perl DateTime - PullRequest
0 голосов
/ 23 марта 2011

Я пытаюсь вычесть две даты друг от друга, но, к сожалению, безуспешно. Может быть, кто-то может помочь мне. Моя первая попытка выглядит так:


#!/usr/bin/perl -w
#use strict;
use warnings;
use DateTime;

$today = DateTime->now( time_zone => 'Europe/Berlin' );
$today = $today->ymd;

my $year = '2011';
my $month = '03';
my $day = '22';

my $dt1 = DateTime-> new (
                     year => $year,
                     month => $month,
                     day   => $day,
                     time_zone =>'Europe/Berlin'
                     );

my $mydate = $dt1->ymd;

my $sub = $today->subtract_datetime($mydate);

print "subtraction: $sub \n";

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 23 марта 2011

Кажется, здесь есть одна проблема:

$today = $today->ymd;

Он записывает поверх объекта, но вы хотите использовать его метод позже.

1 голос
/ 23 марта 2011

->ymd возвращает строку, а не объект DateTime.

$today = DateTime->now( time_zone => 'Europe/Berlin' );
$today = $today->ymd;

должно быть

$today = DateTime->now( time_zone => 'Europe/Berlin' );
$today->truncate( to => 'day' );

или просто

$today = DateTime->today( time_zone => 'Europe/Berlin' );

DateTime

0 голосов
/ 23 марта 2011

Проблема в том, что вы вызываете метод ymd, который возвращает строку, а не объект DateTime. Итак, как говорит wk, вы должны использовать метод subtract_datetime перед вызовом метода ymd. В вашем коде вы, вероятно, получите сообщение «Не могу вызвать метод» subtract_datetime »без ссылки на пакет или объект в ...»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...