簡體   English   中英

在perl中獲取時間戳

[英]get timestamp in perl

我昨天的日期是201103116

我想在perl中獲取昨天的開始時間時間戳和結束時間時間戳。

使用DateTime

use DateTime;

my $start = DateTime->now(time_zone => 'local')->subtract(days => 1)
                ->set(hour => 0, minute => 0, second => 0);
my $end   = $start->clone()->add(days => 1, seconds => -1);

print $start,       " - ",$end,"\n";            # 2011-03-15T00:00:00 - 2011-03-15T23:59:59
print $start->epoch," - ",$end->epoch,"\n";     # 1300147200 - 1300233599

Perl的核心方式是:

my ( $y, $m, $d ) = unpack 'A4 A2 A2', $date;
my $start_ts      = POSIX::mktime( 0, 0, 0, $d,     $m - 1, $y - 1900 );
my $end_ts        = POSIX::mktime( 0, 0, 0, $d + 1, $m - 1, $y - 1900 );

POSIX

並且使用mktime完全可以將負值添加到值中。 因此,如果您需要按照注釋中的建議將結束日期設置為23:59:59,則可以使用以下方法進行修復:

my $end_ts = POSIX::mktime( -1, 0, 0, $d + 1, $m - 1, $y - 1900 );

(盡管,我只想指出,被排除的端點在編程中並不是未知的情況。)

我不明白你的問題。 但是,看看DateTime

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM