Управление датами в PHP без использования регулярных выражений - PullRequest
1 голос
/ 21 сентября 2009

Есть ли способ изменить дату с

1985-12-15

до

1985-12

без использования регулярного выражения?

Ответы [ 8 ]

7 голосов
/ 21 сентября 2009
<?php echo date('Y-m', strtotime('1985-12-15')); ?>

Это должно сделать это.

Это, используя strtotime, преобразует 1985-12-15 в метку времени Unix. Затем функция даты принимает второй параметр времени для форматирования даты.

4 голосов
/ 21 сентября 2009

Преобразуйте дату во время с помощью strtotime, затем используйте date для вывода в правильном формате даты, например:

<?php    
echo date('Y-m', strtotime('1985-12-15'));
3 голосов
/ 21 сентября 2009

Может быть, я просто глуп, но если вы хотите, чтобы начало этой даты сохранялось в виде строки, вы не можете просто использовать substr для извлечения 7 символов в начале эта строка?

Немного похоже, например:

$input = '1985-12-15';

$output = substr($input, 0, 7);
var_dump($output);

Что дает вам:

string '1985-12' (length=7)

В этом случае нет необходимости в какой-либо функции, связанной с манипулированием датами - и это, вероятно, будет даже быстрее / дешевле, чем разбор строки до даты и все такое.

(Да, я знаю, преждевременная оптимизация ^^)

0 голосов
/ 23 сентября 2009

Если вы не уверены, как будет отформатирована дата, вам следует использовать функцию strtotime, в противном случае ее, вероятно, так же легко сделать, если используется формат yyyy-mmm-dd или yy-m-d.

$datearray = explode('-',$date);
echo $datearray[0].'-'.$datearray[1];
0 голосов
/ 21 сентября 2009

у вас уже есть это значение времени в массиве или вы хотите получить подобный вывод из функции date?

0 голосов
/ 21 сентября 2009

Если вы думаете, что регулярное выражение не «дешево», то функции времени почти наверняка будут еще дороже: вам нужно будет преобразовать строку в значение времени, а затем отформатировать его обратно в строку ...

0 голосов
/ 21 сентября 2009

не лучше substr($date,0,strrpos($date,'-'));?

что будет дешевле?

0 голосов
/ 21 сентября 2009
$myDate = date('Y-m',strtotime('1985-12-15'));
echo $myDate // prints '1985-12'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...