php - 有没有更好的方法来获取自 1970 年 1 月 1 日以来的天数

标签 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));
}

如果没有,您是否会添加一些东西来使该功能更加稳定?

最佳答案

使用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;
}

如果未传递时区,则使用当前时区。

关于php - 有没有更好的方法来获取自 1970 年 1 月 1 日以来的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37036482/

相关文章:

php - 在 Node 和 PHP 之间与 Redis 共享 session

java - 尝试从字符串到日期解析时出现 ParseException

javascript - 如何在 JavaScript 中获取时区名称?

php - Mysql PHP 在文本中查找名称

php - 在 Firefox(和其他浏览器)中以 XML 格式查看 PHP 文件输出

php - 使用 php for magento 创建产品时无法添加库存、自定义属性和元

Java SimpleDateFormat 无法正确解析(我使用正确的大写/小写字母..)

ios - 如何在swift 4中获取今天和明天的日期

javascript - setTimeout的实际延迟可能会更短吗?

javascript - ASP.NET 中的客户端时区