我正在创建一个有问题的数据集,我希望将文件修改时间的年份设置为 <1900。我知道Time::Local使用 1900 年的偏移量。我想知道是否有任何方法可以使用此偏移量来创建修改时间发生在 1900 年之前的文件。(Windows 环境顺便说一句。)
这是我到目前为止一直在使用的代码:
use strict;
use warnings;
use File::stat;
use Time::localtime;
use Time::Local;
my $file = "test.txt";
my $when = timelocal(0,0,10,25,6,1899);
#current mod time of the file
my $datetime_string = ctime(stat($file)->mtime);
print $datetime_string,"\n";
#change the mod time of the file
utime $when, $when, $file;
#new mod time
$datetime_string = ctime(stat($file)->mtime);
print $datetime_string,"\n";
编辑:关于@ikegami 的评论,我确实开始研究Win32::API
. 具体来说Win32API::File::Time
。这是我到目前为止的代码:
use Win32API::File::Time qw{:win};
$filename="AnnotationTest.java";
($atime, $mtime, $ctime) = GetFileTime ($filename);
print $mtime,"\n";
SetFileTime ($filename, $atime, $mtime, $ctime);
($atime, $mtime, $ctime) = GetFileTime ($filename);
print $mtime,"\n";
有了这段代码,我不能 100% 确定修改时间的格式是什么。