2012-06-08 2 views
4

Каков наилучший способ заменить дату в формате 'yyyy-mm-dd hh:ii:ss' с помощью 'yyyy-mm-05 hh:ii:ss'?Самый короткий способ заменить дату в формате «yyyy-mm-dd hh: ii: ss» с «yyyy-mm-05 hh: ii: ss»?

Мне нужно изменить даты, чтобы не вычитать несколько дней со дня.

спасибо.

+6

'preg_replace ('/ - \ d {2} /', '-05', $ str)'? Похоже, что использование подхода add/substract для даты или 'mktime()' и т. Д. Было бы лучше, но если ваш строковый формат является статическим, это будет работать, и это, вероятно, самый короткий * (то есть наименьший код) способ сделать это. Это не сильно отказоустойчиво, хотя ... – DaveRandom

ответ

5
$date = '2012-06-08 11:15:00'; 
echo date('Y-m-05 H:i:s', strtotime($date)); // 2012-06-05 23:15:00 
4

Вы можете пойти с:

$dt = new DateTime('2012-06-08 12:00:00'); 
$dt->setDate($dt->format('Y'), $dt->format('m'), 5); 
echo $dt->format('Y-m-d H:i:s'); 

Может быть, не кратчайшим, но это твердый подход

+2

+1 для использования [DateTime class] (http://www.php.net/manual/en/class.datetime.php). – 0b10011

+2

+1 для * наилучшего * способа сделать это, о чем должен действительно запросить OP. – DaveRandom

2

Использование regexp это будет кратчайший путь

Согласен с @DaveRandom. Это самый короткий путь

preg_replace('/-\d{2} /','-05 ',$str) 
0

Самый эффективный способ (не самый лучший) для этого - использовать функцию substr_replace().

$input = '2012-06-08 11:15:00'; 
$output = substr_replace($input, '05', 8, 2); 
echo($output);