سؤال

لدي سلسلة datetime على هذا النحو 14/04/2014 4:57:16 PM وأنا أستخدم تاريخ الكربون للعمل عليه.

ولكن بمجرد أن أحاول القيام بذلك

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

ومع ذلك أتلقى أخطاء في التحليل:التاريخ والوقت :: __ البناء ():فشل تحليل السلسلة الزمنية (@14/04/2014 5:03:45 م) في الموضع 3 (/):شخصية غير متوقعة.

تحديث : حاولت القيام بذلك:

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

وأحصل على الخطأ التالياستدعاء تنسيق دالة عضو () على كائن غير كائن

هل يمكنك مساعدتي في هذا؟

شكرًا

هل كانت مفيدة؟

المحلول

تحتوي سلسلة التاريخ الخاصة بك على مسافة في النهاية - لهذا السبب 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().

أنا لا أعرف أي شيء عن الكربون، ولكن هذا يعمل.كنت تستخدم رقمًا مكونًا من رقمين (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