Days/Months/Years 两个日期之间
Days/Months/Years between two dates
我有两个约会对象。一个以 YYYYMMDD 格式从其他应用程序的 table 中检索到,第二个日期是当地时间,我需要在这两个日期之间 Days/Months/Years。
我试过了
my $t = Time::Piece->strptime($expi, "%Y %m %d"); #First date
my $today = Time::Piece->new; #Localtime
my $diff = $t - $today;
print $diff;
但这给了我一些乱码。
变量 $t = 12 月 31 日星期五 00:00:00 9999
变量 $today = 2 月 19 日星期三 14:40:55 2020
输出:251820094888
有什么想法吗?
提前致谢。
Time::Piece 最多可以让你得到秒数的差异,并且无法将其转换为月、天等。
use DateTime qw( );
use DateTime::Format::Strptime qw( );
my $format = DateTime::Format::Strptime->new(
pattern => '%Y%m%d',
time_zone => 'floating',
on_error => 'croak',
);
my $today =
DateTime
->now( time_zone => 'local' )
->set_time_zone('floating')
->truncate( to => 'day' );
my $dt = $format->parse_datetime('20200101');
my $diff = $today - $dt;
printf("%d years, %d months and %d days\n", $diff->in_units(qw( years months days )));
输出:
0 years, 1 months and 18 days
我有两个约会对象。一个以 YYYYMMDD 格式从其他应用程序的 table 中检索到,第二个日期是当地时间,我需要在这两个日期之间 Days/Months/Years。
我试过了
my $t = Time::Piece->strptime($expi, "%Y %m %d"); #First date
my $today = Time::Piece->new; #Localtime
my $diff = $t - $today;
print $diff;
但这给了我一些乱码。
变量 $t = 12 月 31 日星期五 00:00:00 9999
变量 $today = 2 月 19 日星期三 14:40:55 2020
输出:251820094888
有什么想法吗? 提前致谢。
Time::Piece 最多可以让你得到秒数的差异,并且无法将其转换为月、天等。
use DateTime qw( );
use DateTime::Format::Strptime qw( );
my $format = DateTime::Format::Strptime->new(
pattern => '%Y%m%d',
time_zone => 'floating',
on_error => 'croak',
);
my $today =
DateTime
->now( time_zone => 'local' )
->set_time_zone('floating')
->truncate( to => 'day' );
my $dt = $format->parse_datetime('20200101');
my $diff = $today - $dt;
printf("%d years, %d months and %d days\n", $diff->in_units(qw( years months days )));
输出:
0 years, 1 months and 18 days