如果你想要昨天的日期:
use DateTime qw( );
my $yday_date =
DateTime
->now( time_zone => 'local' )
->set_time_zone('floating')
->truncate( to => 'day' )
->subtract( days => 1 )
->strftime('%Y-%m-%d');
例如,在 2019 年 5 月 14 日 01:00:00 在纽约,它会在 2019 年 5 月 13 日返回。
例如,在 2019 年 11 月 4 日 00:00:00 在纽约,它会在 2019 年 11 月 3 日返回。
请注意,使用->now( time_zone => 'local' )->set_time_zone('floating')->truncate( to => 'day' ) 代替->today( time_zone => 'local' ) 以避免this problem。
如果您想要提前一天的时间:
use DateTime qw( );
my $yday_datetime =
DateTime
->now( time_zone => 'local' )
->subtract( days => 1 )
->strftime('%Y-%m-%d %H:%M:%S');
例如,在 2019 年 5 月 14 日 01:00:00 在纽约,它会在 2019 年 5 月 13 日 01:00:00 返回。
例如,在 2019 年 3 月 10 日 12:00:00 在纽约,它会在 2019 年 3 月 9 日 12:00:00 返回。
例如,在 2019 年 3 月 11 日 02:30:00 在纽约,它会导致错误。由于切换到夏令时,2019-03-10 02:30:00 不存在。
如果您想要提前 24 小时的时间:
use DateTime qw( );
my $yday_datetime =
DateTime
->now( time_zone => 'local' )
->subtract( hours => 24 )
->strftime('%Y-%m-%d %H:%M:%S');
例如,在 2019 年 5 月 14 日 01:00:00 在纽约,它会在 2019 年 5 月 13 日 01:00:00 返回。
例如,在 2019 年 3 月 10 日 12:00:00 在纽约,它会在 2019 年 3 月 9 日 11:00:00 返回。
例如,在 2019 年 3 月 11 日 02:30:00 在纽约,它会在 2019 年 3 月 10 日 01:30:00 返回。