使用Date :: Manip时,为什么会出现“SetDate中的无效区域”错误?

时间:2015-08-09 12:15:23

标签: perl

我有一些代码,我在Debian 8.1上使用Perl 5.20运行。但是我在下一行收到警告和错误:

[1, 3, 8]

警告:

Date::Manip::DM6::Date_Init("TZ=+0430");

错误:

WARNING: the TZ Date::Manip config variable is deprecated
         and will be removed in March 2016.  Please use
         the SetDate or ForceDate config variables instead.

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

弃用在Date::Manip::Config中解释:

  

<强> TZ

     

此变量已弃用,但多个版本将支持此变量。应该使用SetDateForceDate变量(下面描述)。

     

以下是等效的:

$date->config("tz","Europe/Rome");
$date->config("setdate","now,Europe/Rome");

关于&#34;无效区域的警告,&#34;显然* Date::Manip要求您以+HH:MM:SS(或-HH:MM:SS)格式指定偏移量。

要修复这两个警告,请从以下位置更改adsl.pl的第75行:

Date_Init("TZ=+0430");

到此:

Date_Init("setdate=now,+04:30:00");

*我没有在任何地方看到此文档,但警告是由Date::Manip::TZ中的以下代码触发的:

return undef  if (! exists $$self{'data'}{'Offmod'}{$offset});

这会在%Date::Manip::Zones::Offmod中执行哈希查找,其中只包含+HH:MM:SS(或-HH:MM:SS)格式的密钥。