Подтвердить что ты не робот

Добавьте число часов "х"

В настоящее время у меня есть php, возвращающий текущую дату/время следующим образом:

$now = date("Y-m-d H:m:s");

Что я хотел бы сделать, так это создать новую переменную $new_time, равную $now + $hours, где $hours - это количество часов в диапазоне от 24 до 800.

Какие-либо предложения?

4b9b3361

Ответ 1

Вы можете использовать что-то вроде функции strtotime(), чтобы добавить что-то в текущую временную метку. $new_time = date("Y-m-d H:i:s", strtotime('+5 hours')).

Если вам нужны переменные в функции, вы должны использовать двойные кавычки, а затем strtotime("+{$hours} hours"), однако лучше использовать strtotime(sprintf("+%d hours", $hours)) тогда.

Ответ 2

Другое решение (объектно-ориентированное) заключается в использовании DateTime :: add

Пример:

$now = new DateTime(); //current date/time
$now->add(new DateInterval("PT{$hours}H"));
$new_time = $now->format('Y-m-d H:i:s');

PHP документация.

Ответ 3

Вы можете использовать strtotime() для достижения этой цели:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours

Ответ 4

Правильно

Вы можете использовать strtotime() для достижения этой цели:

$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', strtotime($now))); // $now + 3 hours

Ответ 5

Вы также можете использовать время стиля unix для расчета:

$newtime = time() + ($hours * 60 * 60); // hours; 60 mins; 60secs
echo 'Now:       '. date('Y-m-d') ."\n";
echo 'Next Week: '. date('Y-m-d', $newtime) ."\n";

Ответ 6

Ум... ваши минуты должны быть исправлены... "i" - это минуты. Не месяцы.:) (у меня была такая же проблема и для чего-то тоже.

$now = date("Y-m-d H:i:s");
$new_time = date("Y-m-d H:i:s", strtotime('+3 hours', $now)); // $now + 3 hours

Ответ 7

Вы можете попробовать lib "Узу-лайки" и сделать это бегло:

echo Clock::now()->plusHours($hours)->format("Y-m-d H:m:s");

API позволяет выполнять несколько операций.

Ответ 8

Я использую это, это работает круто.

//set timezone
date_default_timezone_set('GMT');

//set an date and time to work with
$start = '2014-06-01 14:00:00';

//display the converted time
echo date('Y-m-d H:i',strtotime('+1 hour +20 minutes',strtotime($start)));

Ответ 9

Я использую следующую функцию, чтобы преобразовать нормальное значение даты в формат mysql datetime.

private function ampmtosql($ampmdate) {
            if($ampmdate == '')
                return '';
            $ampm = substr(trim(($ampmdate)), -2);
            $datetimesql = substr(trim(($ampmdate)), 0, -3);
            if ($ampm == 'pm') {
                $hours = substr(trim($datetimesql), -5, 2);
                if($hours != '12')
                    $datetimesql = date('Y-m-d H:i',strtotime('+12 hour',strtotime($datetimesql)));
            }
            elseif ($ampm == 'am') {
                $hours = substr(trim($datetimesql), -5, 2);
                if($hours == '12')
                    $datetimesql = date('Y-m-d H:i',strtotime('-12 hour',strtotime($datetimesql)));
            }
            return $datetimesql;
        }

Он преобразует значения даты и времени, например,

2015-06-04 09:55 AM -> 2015-06-04 09:55
2015-06-04 03:55 PM -> 2015-06-04 15:55
2015-06-04 12:30 AM -> 2015-06-04 00:55

Надеюсь, это поможет кому-то.

Ответ 10

$date_to_be-added="2018-04-11 10:04:46";
$added_date=date("Y-m-d H:i:s",strtotime('+24 hours', strtotime($date_to_be)));

Комбинация функций date() и strtotime() поможет.

Ответ 11

   $now = date("Y-m-d H:i:s");
   date("Y-m-d H:i:s", strtotime("+1 hours $now"));