Converter data / hora para PHP
-
02-01-2020 - |
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
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'));