Из 09-11-2007 слепить 09-11-2007

Asar

Новичок
Из 09-11-2007 слепить 09-11-2007

Народ, у кого какие мнения — есть вариант означенного в теме перехода проще и грамотнее, чем тупая разбивка по дефису (explode) с последующей подстановкой нужных элементов массива?
 

phprus

Moderator
Команда форума
Asar
Честно говоря я не вижу разницы между:
и
По этому непонятно что и во что ты хочеш перевести.

Но в данном случае я бы воспользовался explode для разбивки по дефису и последующую склейку так как надо.

Update:
Опоздал на 1 минуту...
 

Asar

Новичок
Gas,
Спасиб, как раз с date ворочаюсь, только не дошло, что можно так хорошо сделать.

ToAll,
Ну да, скопипастил тупо, а сменить порядок чисел забыл. Имелось ввиду «Из 09-11-2007 слепить 2007-11-09».
 

phprus

Moderator
Команда форума
Asar
Последний комментарий к описанию strtotime говорит, что она распознает дату 09-11-2007 как 11 сентября, а не 9 ноября.

Вот сам комментарий:
strtotime() reads the timestamp in en_US format if you want to change the date format with this number, you should previously know the format of the date you are trying to parse. Let's say you want to do this :

strftime("%Y-%m-%d",strtotime("05/11/2007"));

It will understand the date as 11th of may 2007, and not 5th of november 2007. In this case I would use:

$date = explode("/","05/11/2007");
strftime("%Y-%m-%d",mktime(0,0,0,$date[1],$date[0],$date[2]));

Much reliable but you must know the date format before. You can use javascript to mask the date field and, if you have a calendar in your page, everything is done.

Thank you.
 

Gas

может по одной?
phprus
ага, только что проверил - не катит,
можно ещё так извратиться (короче чем регом):
PHP:
implode('-',array_reverse(explode('-','09-11-2007')));
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Дата откуда приходит?
 

phprus

Moderator
Команда форума
Gas
можно ещё так извратиться (короче чем регом):
Почему-же извратиться? ИМХО вполне нормально решение. И действительно более короткое чем регулярным выражением.
 

WDStalker

Новичок
Asar да хороший вопрос задал Mr_Max дата откуда приходит? Формируй при выводе нужный формат.
 

Asar

Новичок
Дата приходит с $_GET.
Спасиб за совет по поводу реверса, сам бы не дотумкал бы... А так вроде пашет.
 

Gas

может по одной?
Это было из разряда "а можно ещё так изъ**нуться", вариант с explode и последующим склеиванием будет попроще для понимания тому, кто будет код потом поддерживать.
 

HraKK

Мудак
Команда форума
Gas
Этот вариант читабелен на все 100%, если поддерживать будут такие бараны что не поймут сходу, то это не значит что стоит писать говнокод :)
 

Asar

Новичок
HraKK, поддерживаю, даже для меня — и то читабелен, а куда уж тупее-то?
 
PHP:
$a = '09-11-2007';

function change_substr ($a)
{
	return substr($a, -4) . '-' . substr($a, 3, 2) . '-' . substr($a, 0, 2);
}
такой вариант думаю будет побыстрее...
 

Gas

может по одной?
побыстрее - тут не тот случай.
естественно это первое что пришло в голову, но банально и на 8 символов длинее :)
 
Сверху