如何計算perl中兩個unix時間戳之間的天數有任何簡單的方法,例如: Ex,$ time1 = 1366601846和$ time2 = 1366431011,因此輸出爲2天。如何計算perl中2個unix時間戳之間的天數?
即使兩個unix時間戳之間的差異只有兩秒鐘,也應該考慮爲1天的差異。
之前謝謝..
如何計算perl中兩個unix時間戳之間的天數有任何簡單的方法,例如: Ex,$ time1 = 1366601846和$ time2 = 1366431011,因此輸出爲2天。如何計算perl中2個unix時間戳之間的天數?
即使兩個unix時間戳之間的差異只有兩秒鐘,也應該考慮爲1天的差異。
之前謝謝..
在歐洲/巴黎,這兩個時間戳是
2013/04/20 06:10:11
2013/04/22 05:37:26
目前尚不清楚你想要什麼。
在歐洲/巴黎,時間的差異是一天23小時15分鐘。圓桌會議,這是2天。如果這是你想要的,你可以使用
use DateTime qw();
my $dt1 = DateTime->from_epoch(epoch => 1366601846, time_zone => 'local');
my $dt2 = DateTime->from_epoch(epoch => 1366431011, time_zone => 'local');
my ($days, $minutes, $ns) = ($dt1 - $dt2)->in_units(qw(days minutes nanoseconds));
++$days if $minutes || $ns;
print("$days\n");
在歐洲/巴黎,日曆日期的差異在2天內。如果這是你想要的,你可以使用
use DateTime qw();
my $dt1 = DateTime->from_epoch(epoch => 1366601846, time_zone => 'local');
my $dt2 = DateTime->from_epoch(epoch => 1366431011, time_zone => 'local');
my $days = $dt1->delta_days($dt2)->in_units('days');
print("$days\n");
24 * 60 * 60分割並不總是去上班,上面你的意思爲準。在這兩種情況下,答案取決於您指定的時區。
謝謝,它的作品。我只需要第二個。 – 2013-04-22 05:17:56
拿到兩UNIX(時代)日期之間天差的浮點數,試試這個:
$days = abs ($time1 - $time2)/86400;
Unix的時間戳(或紀元時間戳)是自1970年1月1日上午12點UTC以來的秒數,因此原始差異是以秒爲單位的差異。 86400是一天中的總秒數(60分鐘* 60秒* 24小時),上面的結果是天數的差異。
但是,僅此一項就會使您得到一個長浮點數,您可能希望通過Posix模塊的 ceil()或floor()修剪掉,或者使用printf或sprintf來更改變量值本身:
printf("%.0f", $days);
$days = sprintf("%.0f", $days);
24 * 60 * 60不是一天中的秒數。有些日子有更多,有些更少。 – ikegami 2013-04-22 04:33:42
難道你不能把差異除以24 * 60 * 60 – anthonybell 2013-04-22 04:00:05
正如你所說,有很簡單的方法來做到這一點。你還在找什麼? – stevenl 2013-04-22 04:32:23
您是否在尋找日期差異?如果是這樣,日期在哪裏? (「本地」是可以接受的答案。) – ikegami 2013-04-22 04:34:49