我正在使用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" });
如果我的理解是正确的,则列表的 longName 字段是服务器渲染的并且已过时/不推荐使用。SFTP 为每个目录条目提供了一个包含数据的结构,并且时间以 UTC 列出。
从文档:
如果指定了 $subref,则对于目录中的每个条目,将调用 $subref 并给出对具有三个键的哈希的引用:文件名,目录列表中条目的名称;longname,“长”列表中的条目,如 ls -l;和a,一个 Net::SFTP::Attributes 对象,其中包含条目的文件属性(atime、mtime、权限等)。
因此,您需要获取这些对象并使用其atime和mtime字段。拥有它们后,如果您需要固定时区,将它们转换为本地时区应该是微不足道的。