LINUX.ORG.RU

[perl] timezone, запутался

 


0

1

Здравствуйте!
Нужно посчитать epoch-time к началу текущего дня (00:00:00). Проблема в том, что он, судя по всему, как-то не так учитывает часовой пояс (GMT+4). Т.е. у него день перескакивает не в 00:00 по локальному, а в 04:00.

Код:

#!/usr/bin/perl

use strict;
use warnings;
use POSIX;

my $time;
my $day_sec;
my $tz;
my $day_start;
my $time_shift;
my $epoch;

$time=time();
print "Time: $time\n";
$day_sec=$time % (3600*24);
$tz=strftime("%z",localtime($time));

if ($tz=~/^\+(\d\d)(\d\d)$/) {
  $time_shift=$1*3600+$2*60;
};

$day_start=$time-$day_sec-$time_shift;

print "$1\n";
print "$2\n";
print "Time: $time\n";
print "Day_sec: $day_sec\n";
print "Timezone: $tz\n";
print "Timeshift: $time_shift\n";
print "Day start: $day_start\n";
Что-то я туплю, как исправить?

★★★★★

> Нужно посчитать epoch-time к началу текущего дня (00:00:00).

#!/usr/bin/perl

use strict;
use warnings 'all';
use Time::Local;

my $t = timelocal 0, 0, 0, (localtime)[3..5];

$\ = "\n";
print $t;
print scalar localtime $t;
print scalar localtime;
arsi ★★★★★
()
Ответ на: комментарий от arsi

О, как все просто. Спасибо, большое!

kovrik ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.