有没有更好的方法来获得自1970年1月1日以来的日子

时间:2016-05-04 19:33:57

标签: php time timezone

我需要一个函数来返回自1970年1月1日以来的天数,但取决于时区。 我编写了以下函数,但是想知道是否有更好的方法(确定gmt的偏移量的一些更好的方法是一件好事)。

function getDaysSinceUnix($time = null){
    if($time === null){$time = time();}
    $day = 24*60*60;
    $offset = intval(substr(date('O'),0,-2))*60*60;
    return intval(floor(($time+$offset)/$day));
}

如果没有,您是否会添加一些可以使此功能更稳定的内容?

2 个答案:

答案 0 :(得分:2)

使用DateTime

function getDaysSinceUnix( $time = 0, $timeZone = Null )
{
    $time = "@$time";
    $tz = new DateTimeZone( $timeZone ?: date_default_timezone_get() );
    return date_create( $time )->setTimeZone( $tz )->diff( date_create( '1970-01-01', $tz ) )->days;
}

如果没有通过时区,则使用当前时区。

答案 1 :(得分:0)

Carbon库几乎是PHP日期/时间工作的黄金标准。

Carbon\Carbon::createFromTimestamp(0)->diffInDays();