Вопрос

У меня есть строка даты и времени как таковая 14/04/2014 4:57:16 PM и я использую Carbon DateTime для работы над этим.

Однако как только я попытаюсь это сделать

$dt = Carbon::createFromTimestampUTC($encDateTime);

Однако я получаю ошибки анализа:ДатаВремя::__construct():Не удалось проанализировать строку времени (@14.04.2014 17:03:45 ) в позиции 3 (/):Неожиданный персонаж.

Обновление: Я попробовал сделать это:

$date = DateTime::createFromFormat('d/m/Y H:i A', $encDateTime);
dd($date->format('Y-m-d H:i:s'));

и я получаю следующую ошибкуВызов функции-члена format() для объекта, не являющегося объектом

Можете ли вы помочь мне с этим?

Спасибо

Это было полезно?

Решение

Ваша строка даты содержит пробел в конце - вот почему DateTime::createFromFormat() не удается его разобрать.Чтобы удалить лишние пробелы в начале и/или конце, вы можете использовать trim().

Кроме того, вы изначально использовали H, то есть 24-часовой формат с ведущими нулями.В данном случае похоже, что у вас 12-часовой формат, поэтому используйте g вместо (h тоже подойдет).

Должно работать следующее:

$date = DateTime::createFromFormat('d/m/Y g:i:s A', trim($encDateTime));

Когда вы получаете такие ошибки, всегда var_dump() ценности.Таким образом, вы сможете проверить, содержит ли переменная то, что, по вашему мнению, она делает.

Другие советы

Статический метод createFromFormat из DateTime возвращается NULL когда возникает ошибка синтаксического анализа.Формат, который был задан (d/m/Y H:i A) был неправ.Отсюда и ошибка"Вызов функции-члена format() на не-объекте".

Вы можете создавать объекты DateTime из нестандартных временных строк следующим образом:

$time = '14/04/2014 4:57:16 PM';
$date = Carbon\Carbon::createFromFormat('d/m/Y g:i:s A', $time);

Доступные символы различных форматов и их пояснения можно найти в документация для date().

Я ничего не знаю о Carbon, но это работает.Вы использовали две цифры (H) вместо h (редактируйте:g — то же самое) в вашем методе createFromFormat:

$encDateTime = "14/04/2014 4:57:16 PM";

$date1 = DateTime::createFromFormat('d/m/Y h:i:s A', trim($encDateTime));
echo $date1->format('Y-m-d H:i:s');

результат:

2014-04-14 16:57:16

просто используй ларавель функция даты как:

$productsales=DB::table('tbl_trans')   
     ->leftjoin('tbl_product','tbl_product.prod_id','=','tbl_trans.product_id')  
     ->select(DB::raw('count(product_id) as quant'),'product_id','tbl_product.name','tbl_product.code','tbl_product.price')    
     ->groupBy('product_id','code','name','price')    
     ->whereDate('tbl_trans.created_at','2017-07-29')  
     ->get();


   return view('reports.productsales',compact('productsales'));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top