Rumah > Soal Jawab > teks badan
Hello semua, saya sedang menghantar borang dengan dua medan "masa_masuk" dan "masa_habis"
Saya cuba mendapatkan perbezaan antara dua tarikh menggunakan date_diff() Saya memastikan bahawa time_in dalam pangkalan data adalah dalam format DATE dan time_out dalam format DATE dan kedua-duanya bukan rentetan
Saya mendapat ralat ini: Ralat maut: Ralat jenis tidak ditangkap: date_diff0: Parameter #1 (SbaseObject) mestilah jenis DateTimeInterface, rentetan diberikan dalam C:ampphtdocsaicAdminscriptsbackend-script.php:97Stack Trace: #0 C:ilxampphtdocsaicAdminscriptsbackend-script.php(97):date_diff(°2023-05-19,2023-05-23#1(utama) throwinC:xampphtdocsaicAdminscriptsbackend-script.phponline97
Dan kod saya ialah
<div class="col"> <div class="form-group"> <input type="date" class="form-control" placeholder="Enter Time in" name="time_in" value="<?php echo $time_in; ?>"> </div> </div> <div class="col"> <div class="form-group"> <input type="date" class="form-control" placeholder="Enter Time out" name="time_out" value="<?php echo $time_in; ?>"> </div> </div>
Dan kod hujung belakang
if(empty($_GET['id']) && !empty($_GET['name']) && $_GET['name']=='current_job'){ extract($_POST); if(!empty($jobnumber)){ $data= [ 'jobnumber'=>$jobnumber, 'revison' =>$revison, 'groupp'=>$groupp, 'checker'=>$checker, 'releasedate'=> $releasedate, 'quote_number'=> $quote_number, 'building_number'=>$building_number, 'task'=>$task, 'designer_ca'=>$designer_ca, 'designer_name'=>$designer_name, 'time_in'=>$time_in, 'time_schedule'=>$time_schedule, 'time_out'=>$time_out, 'spent_time'=>date_diff($time_out,$time_in), 'quote_weight'=>$quote_weight, 'job_weight'=>$job_weight, 'cycle_time'=>$cycle_time, 'chk_time'=>$chk_time, 'wd'=>$wd, 'remarks'=>$remarks ]; $tableName=$_GET['name']; if(!empty($data) && !empty($tableName)){ $insertData=insert_data($data,$tableName); if($insertData){ echo "<span class='success'>Current Job Was saved sucessfully</span>"; }else{ echo "<span class='fail'>Error!.. check your query</span>"; } } }else{ echo "<span class='fail'>Current Job field is empty</span>"; } }
Saya tidak menyalin keseluruhan kod borang, hanya coretan Bagaimanakah saya boleh menyelesaikan masalah ini? ?
Saya menyemak semula bahawa masa_masuk dan masa_habis dalam pangkalan data disimpan sebagai format DATE, saya harap semuanya berfungsi dengan baik
P粉9669797652023-09-14 15:43:03
Tidak ada maklumat yang mencukupi di sini untuk benar-benar menjawab soalan ini.
Tetapi dari kesilapan itu, masalahnya nampaknya masa_masuk dan masa_masa anda bukan objek DateTime.
Anda mesti menolak mereka melalui DateTime:CreateFromFormat
dahulu.
Ini akan menjadikan mereka objek DateTime.
Kemudian date_diff akan memberi anda objek DateInterval yang masih tidak boleh disimpan dengan bersih dalam pangkalan data.
Pertimbangkan untuk memanfaatkan cap waktu zaman unix.
$datetime_in = DateTime::createFromFormat('h:i a', $form_time_in); $datetime_out = DateTime::createFromFormat('h:i a', $form_time_out); $seconds_elapsed = $datetime_out->format('U') - $datetime_in->format('U');
Nota: "h:i a" memerlukan format "1:30 pagi", lihat pilihan lain di sini.