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



我正在使用Net::SFTP。我的意图是列出这些文件及其修改日期。我可以用UTC格式列出带有日期的文件。我需要EDT格式。有可用的设置吗?

目前,我正在Linux上使用Perl5。

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

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

来自文件:

如果指定了$subref,那么对于目录中的每个条目,都会调用$subref并为其提供一个具有三个键的哈希引用:filename,目录列表中条目的名称longname,类似ls-l的"长"列表中的一个条目;一个,一个Net::SFTP::Attributes对象,它包含条目的文件属性(atime、mtime、permissions等)。

因此,您需要获得一个对象,并使用其atimemtime字段。一旦你有了它们,如果你需要一个固定的时区,将它们转换为本地时区应该很简单。

相关内容

  • 没有找到相关文章

最新更新