如何在不同的时区显示Net :: SFTP时间戳?

时间:2012-08-01 04:47:55

标签: perl timezone

我正在使用Net::SFTP。我的目的是列出文件及其修改日期。我能够以UTC格式列出日期文件。我需要EDT格式。有没有可用的设置?

目前,我在Linux上使用Perl 5.

my $sftp = Net::SFTP->new($host, %args) or die "Cannot connect to $@";
$sftp->ls('.' , sub { print $_[0]->{longname}, "\n" });

1 个答案:

答案 0 :(得分:0)

如果我的理解是正确的,列表的longName字段是服务器呈现的并且已过时/不建议使用。 SFTP为每个目录条目提供包含数据的结构,并在UTC中列出时间。

来自文档:

  

如果指定了$ subref,则对于目录中的每个条目,将调用$ subref并给出对具有三个键的散列的引用:filename,目录列表中条目的名称; longname ,像ls -l这样的“长”列表中的条目;和一个,一个Net :: SFTP :: Attributes对象,它包含条目的文件属性(atime,mtime,permissions等)。

因此,您需要获取 a 对象并使用其 atime mtime 字段。一旦你拥有它们,如果你需要一个固定的时区,将它们转换为本地时区应该是微不足道的。