Как вычесть десятичное время из часового времени в PHP - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть следующий скрипт PHP:

<?php
  $clockTime = "10:00 AM";
  $decimalTime = "0.75"; // represents time in hours in decimal format

  echo date( 'g:i A', strtotime( strtotime( $clockTime ) . ' -'.$decimalTime.' hours' ) ); // returns "7:00 PM" when I need it to return "9:15 AM"
?>

Как мне заставить скрипт правильно рассчитать и вернуть 9: 15 AM вместо 7: 00 PM ?

1 Ответ

0 голосов
/ 28 апреля 2018

strtotime возвращает время в секундах, поэтому вам нужно преобразовать десятичное время в секундах:

<?php
date( 'g:i A', strtotime( $clockTime ) - $decimalTime * 60 * 60 ) ); 
?>

Однако, это не будет работать, когда в игру вступает летнее время (DST). Особенно, если ваш код будет работать в разных странах, используйте часовые пояса и DateTime -API:

<?php
$date = new \DateTime($clockTime); // This uses the system default timezone where the server is located
$date->sub(new \DateInterval('PT' . ((int) $decimalTime * 60 * 60) . 'S'));
echo $date->fomat('g:i A');
?>
...