Pergunta

Eu tenho uma seqüência de data / hora, como tal, 14/04/2014 4:57:16 PM e eu estou usando carbono data / hora para trabalhar.

No entanto assim que eu tente fazer isso

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

No entanto, eu estou recebendo erros de análise :Data / hora::__construct():Falha ao analisar o tempo de cadeia de caracteres (@14/04/2014 5:03:45 PM ) na posição 3 (/):O carácter inesperado.

Udpate : Eu tentei fazer isso :

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

e eu recebo o seguinte erro Chamada para uma função de membro format() em um objeto não-

Você pode por favor me ajudar com isso?

Obrigado

Foi útil?

Solução

A sua data de seqüência de caracteres contém um espaço no final - é por isso que DateTime::createFromFormat() falha para analisá-lo.Para retirar o excesso de espaço em branco do início e/ou final, você pode usar trim().

Além disso, foram originalmente a utilizar H, que é o formato de 24 horas com zeros à esquerda.Neste caso, parece que você tem um formato de 12 horas, portanto, use g em vez disso, (h seria possível, também).

O seguinte deve funcionar:

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

Quando você receber erros, sempre var_dump() os valores.Dessa forma, você pode verificar se a variável contém o que você acha que ele faz.

Outras dicas

O método estático createFromFormat a partir de DateTime retorna NULL quando há um erro de análise.O formato que foi dado (d/m/Y H:i A) estava errado.Daí o erro "Chamada para uma função de membro format() em um não-objeto".

Você pode criar DateTime objetos de não-padrão timestrings como este:

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

O diferente formato de caracteres disponíveis e suas explicações pode ser encontrada em a documentação para date().

Eu não sei nada sobre o Carbono, mas isto funciona.Você estava usando um de dois dígitos (H) em vez de h (editar:g é exatamente a mesma coisa) em seu createFromFormat método:

$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');

resultado:

2014-04-14 16:57:16

basta usar laravel data de função como:

$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'));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top