我的日期格式为YYYY-MM-DD hh:mm:ss,我希望在这个日期增加48小时。例如我的日期是2018-02-05 12:00:00,我希望在此日期加48小时,以2018-02-05 12:00:00的格式获得相同格式的日期YYYY-MM -DD hh:mm:ss?
答案 0 :(得分:3)
使用DateTime添加48小时,
# In America/New_York,
# 2018-02-05 12:00:00 ⇒ 2018-02-07 12:00:00
# 2018-11-03 12:00:00 ⇒ 2018-11-05 11:00:00
$dt->add( hours => 48 );
使用DateTime添加2天
# In America/New_York,
# 2018-02-05 12:00:00 ⇒ 2018-02-07 12:00:00
# 2018-11-03 12:00:00 ⇒ 2018-11-05 12:00:00
$dt->add( days => 2 );
如何解析和格式化:
use DateTime::Format::Strptime qw( );
my $format = DateTime::Format::Strptime->new(
pattern => '%Y-%m-%d %H:%M:%S',
time_zone => 'local',
on_error => 'croak',
);
my $dt = $format->parse_datetime('2018-02-05 12:00:00');
$dt->set_formatter($format); # Automatically format correctly on stringification.
...
say $dt;
答案 1 :(得分:2)
https://<servername>/zabbix/zabbix.php?action=dashboard.view
https://<servername>/zabbix/index.php
http://<servername>/zabbix/api_jsonrpc.php
答案 2 :(得分:-1)
使用Time :: Piece,
添加48小时test
使用Time :: Piece,
添加2天# In America/New_York,
# 2018-02-05 12:00:00 ⇒ 2018-02-07 12:00:00
# 2018-11-03 12:00:00 ⇒ 2018-11-05 11:00:00
my $tp = localtime->strptime($timestamp, $format);
$tp += ONE_HOUR * 48; # Or: $tp += ONE_DAY * 2;
say $tp->strftime($format);
重要强>
# In America/New_York,
# 2018-02-05 12:00:00 ⇒ 2018-02-07 12:00:00
# 2018-11-03 12:00:00 ⇒ 2018-11-05 12:00:00
my $tp = Time::Piece->strptime($timestamp, $format); # Pretend the dt is UTC even if local!
$tp += ONE_DAY * 2; # Or: $tp += ONE_HOUR * 48;
say $tp->strftime($format);
和ONE_DAY * 2
之间没有区别。
ONE_HOUR * 48
然而,2天和48小时不一样。这就是为什么我们必须在添加天数时假装日期时间是UTC日期时间(即使它不是)。处理混合金额(例如1天和1小时)是不可能的。
就个人而言,我避免使用这个容易出错的模块。
公共位:
$ perl -MTime::Seconds -e'CORE::say( ONE_DAY * 2 )'
172800
$ perl -MTime::Seconds -e'CORE::say( ONE_HOUR * 48 )'
172800