如何按给定时间戳获取时间段(日,周,月)?我不想约会。我希望下一个时间段基于秒数。
是否有PHP原生函数?
示例:
$period = getTimeperiod( 15638400 );
我的尝试:我可以检查并计算秒数:
if x <= 60 => min
if x <= 60*60 => hour
if x <= 60*60*24 => day
...
编辑:
时间段是指分钟,小时,日,周......,如上所述......?!所以我想要的是时间戳的相应时间段。
示例:(day = 86400 secs
)然后getTimeperiod( 85000 )
的时间戳应为“天”。
答案 0 :(得分:0)
我认为你正在搜索类DateInterval ......
它是自5.3.0以来的PHP的一部分,并且有一个名为createFromDateString()的静态函数,您可以在其中设置一个类似“3600秒”的字符串的DateInterval。从这个对象,你可以得到日,月,年等。
看一下这个页面: http://www.php.net/manual/de/dateinterval.createfromdatestring.php
答案 1 :(得分:0)
但这是在正确的路径上返回间隔对象(句点)吗?致@SimonSimCity指出DateInterval。如果你指导我,我可以改善答案。
<?php
$timestamp = 15638400;
echo "The timestamp $timestamp is " . date("Y-m-d H:i:s", 15638400) . "<br \>";
echo "<pre>";
print_r (DateInterval::createFromDateString(date("Y \\y\\e\\a\\r\\s m \\m\\o\\n\\t\\h\\s d \\d\\a\\y\\s\\ H \\h\\o\\u\\r\\s i \\m\\i\\n\\u\\t\\e\\s s \\s\\e\\c\\o\\n\\d\\s", 15638400 ) ) );
echo "</pre>"
?>
对外输出
The timestamp 15638400 is 1970-07-01 00:00:00
DateInterval Object
(
[y] => 1970
[m] => 7
[d] => 1
[h] => 0
[i] => 0
[s] => 0
[invert] => 0
[days] => 0
)
答案 2 :(得分:0)
我这样解决了:
/*
seconds 0
minutes 1
hours 2
days 3
week 4
month 5
year 6
decade 7
century 8
millenium 9
*/
$arTimes = array(
0 => 1,
1 => 60,
2 => 60*60,
3 => 60*60*24,
4 => 60*60*24*7,
5 => 60*60*24*7*4,
6 => 60*60*24*7*4*12,
7 => 60*60*24*7*4*12*10,
8 => 60*60*24*7*4*12*10*10,
9 => 60*60*24*7*4*12*10*10*10
);
$nDiff = strtotime( $nTo ) - strtotime( $nFrom );
switch( $nDiff )
{
// check difference and time period
case $nDiff <= $arTimes[ 1 ]:
$nGranularity = 0;
break;
...
}