Sato
Sato

Reputation: 8602

File modification time, unix timestamp, timezone in Perl?

I want to just keep today's log in logs directory.

use POSIX qw(mktime);
use Time::Local;
my $file="20130204.log";
print "$file\t";
open my $fh,'<',$file;
my $modtime = (stat($fh))[9];
print "modtime:$modtime\n";
my $time = timelocal(59,59,23,4,2,2013);
print "Time::Local::time(2013-2-4 23:59:59) => $time\n";
$time = mktime(59,59,59,4,2,2013-1900,0,0);
print "mktime(2013-2-4 23:59:59) => $time\n";

results:

20130204.log        modtime:1359989999
Time::Local::time(2013-2-4 23:59:59) => 1362409199
mktime(2013-2-4 23:59:59) => 1362538799

date: Tue Feb 5 10:57:00 JST 2013

ls -l

-rw-r--r-- 1 root root 945203711 Feb  4 23:59 20130204.log

date -d '2013-02-04 23:59:59' +%s: 1359989999

Why Time::Local::time and mktime do not give me 1359989999?

Upvotes: 1

Views: 842

Answers (1)

ikegami
ikegami

Reputation: 385849

Jan = 0, 1900 = 0

$time = timelocal(59,59,23,4,2-1,2013-1900);
$time = mktime(59,59,59,4,2-1,2013-1900,0,0);

Upvotes: 1

Related Questions