代码之家  ›  专栏  ›  技术社区  ›  user23427046

PHP中两个日期之间的时间

  •  0
  • user23427046  · 技术社区  · 1 年前
    <?php
    $timezone='Asia/Tokyo';
    $date_time_now = new DateTime('now', new DateTimeZone($timezone));
    $date_time_now_formatted = $date_time_now->format('Y-m-d H:i:s');
                   echo $date_time_now_formatted . '<br>';
    
    $UTC = new DateTime('now', new DateTimeZone('UTC'));
    $UTC_formatted = $UTC->format('Y-m-d H:i:s');
                   echo $UTC_formatted . '<br>';
    
    $difference_seconds = $date_time_now->getTimestamp() - $UTC->getTimestamp();
                   echo $difference_seconds . ' <br>';
    ?>
    

    为什么我得到零?我想计算时差。

    3 回复  |  直到 1 年前
        1
  •  1
  •   karthik Subburam    1 年前
     <?php
    $timezone_tokyo = new DateTimeZone('Asia/Tokyo');
    $timezone_utc = new DateTimeZone('UTC');
    
    $date_time_tokyo = new DateTime('now', $timezone_tokyo);
    $date_time_utc = new DateTime('now', $timezone_utc);
    
    $offset_tokyo = $timezone_tokyo->getOffset($date_time_tokyo);
    $offset_utc = $timezone_utc->getOffset($date_time_utc);
    
    $difference_seconds = $offset_tokyo - $offset_utc;
    echo "Time difference: " . $difference_seconds . ' seconds<br>';
    ?>
    

    试试这个。在这里,它以秒为单位显示差异

        2
  •  1
  •   Álvaro González    1 年前

    你的两次约会都是 now ,所以它们是相同的(你最多可以得到计算机运行这两个语句所需的一小部分秒)。特别地, DateTime::getTimestamp() 返回Unix时间,这是一个绝对时间(一个固定的时刻)。整体 DateTimeInterface 实现将时区考虑在内,所以将时间切换到不同的区域不会使其成为不同的(绝对)时间。

    要计算两个本地时间之间的差异,可以减去时区偏移:

    dump($UTC->getOffset(), $date_time_now->getOffset(), $UTC->getOffset() - $date_time_now->getOffset());
    
        3
  •  0
  •   Morrowga    1 年前
    $timezone='Asia/Tokyo';
    $date_time_now = new DateTime('now', new DateTimeZone($timezone));
    $date_time_now_formatted = $date_time_now->format('Y-m-d H:i:s');
    
    $UTC = new DateTime('now', new DateTimeZone('UTC'));
    $UTC_formatted = $UTC->format('Y-m-d H:i:s');
    
    $difference_seconds = strtotime($date_time_now_formatted) - 
    strtotime($UTC_formatted);
    
    return date('H:i:s', $difference_seconds); //or $different_seconds;