2012-06-18 2 views
0

В для цикла, я использую следующий код для преобразования из одного формата в другой даты:DateTime :: createFromFormat для генерации булевых элементов?

339: $newdate = date_create_from_format('j-M g:i A', $moneyline[$i][date]); 
340: echo date_format($newdate, 'Y-m-d'); 

Согласно var_dump от $ манилайн [$ я] [дата], моя переменная, как представляется, строка: string(15) "18-Jun 7:05 PM"

Но когда я использую переменную в качестве аргумента для $newdate конструктора, $newdate создает логическое согласно vardump: bool(false)

Это означает, s, когда я пытаюсь выполнить строку 340, я получаю следующее сообщение об ошибке:

Warning: date_format() expects parameter 1 to be DateTime, boolean given in /home/andrewmin/andrewmin.com/share/scraping/betting_scraping.php on line 340 

Однако, если я изменю линии 339 к:

339: $newdate = date_create_from_format('j-M g:i A', '18-Jun 7:05 PM'); 

печатает отлично. У кого-нибудь есть идеи о том, почему?

изменения: извините, это не Еогеасп, это для:

for ($i = 2; $i < $array_length; $i++) { 
+0

Попробуйте объявить его на дату, например, 'date ($ moneyline [$ i] [date])'. – thegrede

+0

Можете ли вы показать, как выглядит foreach? Я только спрашиваю, потому что мне интересно, нужен ли счет '$ i'. Для меня это не имело никакого значения, но я думаю, что нужно указывать индекс 'date' в' $ moneyline [$ i] [date] ', иначе вы получите предупреждение. Но это не вызвало у меня проблемы. 'date_create_from_format' возвращает' FALSE', если он терпит неудачу. – drew010

+0

@thegrede - я пробовал сделать это: $ currentdate = date ($ moneyline [$ i] [дата]); $ newdate = date_create_from_format ('j-M g: i A', $ currentdate); echo date_format ($ newdate, 'Y-m-d'); К сожалению, та же ошибка. –

ответ

0

Конечно, когда я тест, используя этот код:

$moneyline = array(
    13 => array(
    'date' => "18-Jun 7:05 PM" 
) 
); 
$i = 13; 
$newdate = date_create_from_format('j-M g:i A', $moneyline[$i][date]); 
echo date_format($newdate, 'Y-m-d'); 

я получаю этот результат:

**Notice:** Use of undefined constant date - assumed 'date' in J:\www\test\datetime.php on line 89 

2012-06-18 

Извещение может быть освобождено из-за правильного цитирования индекса массива 'date'.

Мое предположение: ваш массив $moneyline содержит строку, не соответствующую формату даты, предоставленному вами (например, пустую строку). В этом случае date_create_from_format потерпит неудачу и вернется false.

Если у вас есть сомнения, пожалуйста, отправьте более полную копию связанного кода и массив, в котором код не работает.

+0

Нет, это правильный формат. Я скопировал вывод var_dump ('18-Jun 7:05 PM') и использовал его для ввода, и он отлично работал. –

+0

И да, я очистил индексные массивы (хорошо поймал ха-ха), но это не решило. –

+0

Я предполагаю, что ваш массив '$ moneyline' содержит более одного элемента, поэтому я спрашиваю. Является ли это ошибкой для каждого элемента или только для этого? Опять же, разместите * полный * дамп массива '$ moneyline', в результате чего возникнет ошибка. Это дает нам лучший способ помочь вам. Теперь мы должны многое догадаться, потому что ваше описание проблемы является неполным. – Bart

Смежные вопросы