# phpman > perldoc > Yes

## Found in /usr/share/perl/5.34/pod/perlfaq4.pod
  How do I find yesterday's date?
    (contributed by brian d foy)

    To do it correctly, you can use one of the "Date" modules since they
    work with calendars instead of times. The DateTime module makes it
    simple, and give you the same time of day, only the day before, despite
    daylight saving time changes:

        use DateTime;

        my $yesterday = DateTime->now->subtract( days => 1 );

        print "Yesterday was $yesterday\n";

    You can also use the [Date::Calc](https://www.chedong.com/phpMan.php/perldoc/Date%3A%3ACalc/markdown) module using its "Today_and_Now"
    function.

        use [Date::Calc](https://www.chedong.com/phpMan.php/perldoc/Date%3A%3ACalc/markdown) qw( Today_and_Now Add_Delta_DHMS );

        my @date_time = Add_Delta_DHMS( Today_and_Now(), -1, 0, 0, 0 );

        print "@date_time\n";

    Most people try to use the time rather than the calendar to figure out
    dates, but that assumes that days are twenty-four hours each. For most
    people, there are two days a year when they aren't: the switch to and
    from summer time throws this off. For example, the rest of the
    suggestions will be wrong sometimes:

    Starting with Perl 5.10, [Time::Piece](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3APiece/markdown) and [Time::Seconds](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3ASeconds/markdown) are part of the
    standard distribution, so you might think that you could do something
    like this:

        use [Time::Piece](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3APiece/markdown);
        use [Time::Seconds](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3ASeconds/markdown);

        my $yesterday = localtime() - ONE_DAY; # WRONG
        print "Yesterday was $yesterday\n";

    The [Time::Piece](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3APiece/markdown) module exports a new "localtime" that returns an object,
    and [Time::Seconds](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3ASeconds/markdown) exports the "ONE_DAY" constant that is a set number of
    seconds. This means that it always gives the time 24 hours ago, which is
    not always yesterday. This can cause problems around the end of daylight
    saving time when there's one day that is 25 hours long.

    You have the same problem with [Time::Local](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3ALocal/markdown), which will give the wrong
    answer for those same special cases:

        # contributed by Gunnar Hjalmarsson
         use [Time::Local](https://www.chedong.com/phpMan.php/perldoc/Time%3A%3ALocal/markdown);
         my $today = timelocal 0, 0, 12, ( localtime )[3..5];
         my ($d, $m, $y) = ( localtime $today-86400 )[3..5]; # WRONG
         printf "Yesterday: %d-%02d-%02d\n", $y+1900, $m+1, $d;

