Ralat semasa menyerahkan borang dengan dua medan tarikh dan menggunakan date_diff() dalam PHP
P粉817354783
P粉817354783 2023-09-13 23:39:55
0
1
365

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

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 "Current Job Was saved sucessfully"; }else{ echo "Error!.. check your query"; } } }else{ echo "Current Job field is empty"; } }

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粉817354783
P粉817354783

membalas semua (1)
P粉966979765

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 melaluiDateTime:CreateFromFormatdahulu. 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 laindi sini.

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!