Как проверить юникс время на 1 день старше - PullRequest
2 голосов
/ 28 июня 2011

Как проверить, что время UNIX на 1 день старше

для примера: время UNIX составляет 1308715355

Я хочу найти, что это время на 1 день старше или нет, сейчас

Ответы [ 4 ]

10 голосов
/ 28 июня 2011

Если вы считаете, что 2011-06-27T01: 05 менее чем на один день старше, чем 2011-06-28T01: 00,

use DateTime;

my $epoch = '1308715355';

my $dt_ref = DateTime->from_epoch(epoch => $epoch, time_zone => 'local');
my $dt_now = DateTime->now(time_zone => 'local');

$dt_ref->add(days => 1);
if ($dt_ref <= $dt_now) {
   # At least one day old.
}

Если вы считаете, что 2011-06-27 на один день старше, чем 2011-06-28, независимо от времени дня,

use DateTime;

my $epoch = '1308715355';

my $dt_ref = DateTime->from_epoch(epoch => $epoch, time_zone => 'local')
   ->truncate( to => 'days' );
my $dt_now = DateTime->today(time_zone => 'local');

$dt_ref->add(days => 1);
if ($dt_ref <= $dt_now) {
   # At least one day old.
}

Upd : исправление ошибки грамматики: s / старше / старше /

4 голосов
/ 28 июня 2011
> date -dtomorrow +%s; date +%s
1309366474
1309280074

Это должно решить, кстати, проблему DST, о которой упоминал Эван.

Вы не упомянули желаемое пространство решения, так что, надеюсь, этого будет достаточно.

2 голосов
/ 28 июня 2011
use strict;
use warnings;
use DateTime;

my $epoch = '1308715355';

my $dt = DateTime->from_epoch(epoch => $epoch, time_zone => 'local')
                 ->add(days => 1);
print $dt; # '2011-06-22T23:02:35' -- for *my* time zone (CDT)
print $dt->epoch; # '1308801755'
2 голосов
/ 28 июня 2011

Сравнение с количеством секунд для дня обычно достаточно (60 * 60 * 24 = 86400).Однако, если это всегда должно работать точно, вы должны принять во внимание, когда вы переключаетесь на DST и обратно.Эти дни 23 и 25 часов.

Большинство людей склонны упускать из виду летнее время.Это может вызвать много проблем, если вам нужна точность при работе со временем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...