Добавьте число часов "х"
В настоящее время у меня есть php, возвращающий текущую дату/время следующим образом:
$now = date("Y-m-d H:m:s");
Что я хотел бы сделать, так это создать новую переменную $new_time
, равную $now + $hours
, где $hours
- это количество часов в диапазоне от 24 до 800.
Какие-либо предложения?
Ответы
Ответ 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"));