cari

Rumah  >  Soal Jawab  >  teks badan

Terjemahan tarikh tamat perbandingan DateTime PHP ialah:

<p>Saya cuba membuat butang dilumpuhkan dengan membandingkan masa tarikh hari ini dengan tarikh tamat dalam pangkalan data, tetapi saya menghadapi masalah. Saya telah membuat syarat tetapi ia tidak berfungsi pada tarikh akhir 1 hari, contohnya: 2023-07-31 00:00:00 lwn. 2023-07-31 00:00:00. <br /><br />Berikut ialah kod yang saya cuba: </p><p><br /></p> <pre class="brush:php;toolbar:false;">// Pembolehubah // $request_project->start_date (mengandungi tarikh mula dengan jenis data datetime juga ditakrifkan oleh pengguna) // $request_project->end_date (mengandungi tarikh akhir dengan jenis data datetime juga ditentukan pengguna) $startDate = new DateTime($request_project->start_date); $endDate = new DateTime($request_project->end_date); $startDateTime = tarikh('Y-m-d') ' 00-00-00'; $endDateTime = tarikh('Y-m-d') ' 23-59-59'; $startDateString = $startDate->format('Y-m-d H:i:s'); $endDateString = $endDate->format('Y-m-d H:i:s');</pre> <p>Jadi saya ingin membandingkan jika tarikh tamat yang ditentukan pengguna adalah kurang daripada atau sama dengan masa tarikh hari ini, jika ya butang akan aktif dan mempunyai kelas btn-utama, jika tidak, atribut yang dilumpuhkan akan ditambah dan btn-utama akan ditukar kepada btn -secondary. </p> <pre class="brush:php;toolbar:false;"><?php if($endDateString <= $endDateTime) {?> <a href="#" class="btn btn-primary btn-hover w-100 mt-2" onclick="doSomething()">Mohon Sekarang <i class="uil uil-arrow-right"></i></a> <?php } lain { ?> <a href="#" class="btn btn-secondary btn-hover w-100 mt-2 dilumpuhkan" onclick="doSomething()">Mohon Sekarang <i class="uil uil-arrow-right"> </i></a> <?php } ?> <a href="#" class="btn btn-soft-warning btn-hover w-100 mt-2 bookmark" id="<?=$request_project->id?>"><i class="uil uil-bookmark"> </i> Tambah Penanda Halaman</a></pre> <p>Daripada melaksanakan blok kod else, ia sentiasa melaksanakan blok kod if, walaupun tarikh_akhir telah tamat tempoh. </p>
P粉920835423P粉920835423488 hari yang lalu478

membalas semua(1)saya akan balas

  • P粉720716934

    P粉7207169342023-08-01 10:25:25

    Dilema yang anda hadapi nampaknya berkaitan dengan cara anda membandingkan tarikh tamat dengan tarikh-masa semasa. Masalahnya terletak pada cara anda membina pembolehubah $endDateTime menggunakan fungsi date().

    Dalam kod anda, anda menggunakan 'Y-m-d' sebagai format tarikh(), yang bermaksud ia hanya mengandungi tahun, bulan dan hari, tanpa masa. Anda kemudiannya menggabungkan '23-59-59' kepada tarikh, mengakibatkan format tarikh yang salah.

    Untuk menyelesaikan masalah ini, anda harus mengubah suai pembolehubah $endDateTime untuk memasukkan masa lengkap (jam, minit dan saat) dalam format yang betul sebelum membandingkan. Anda boleh melakukan ini menggunakan fungsi date() dalam format 'Y-m-d H:i:s', seperti ini:

    $endDateTime = date('Y-m-d 23:59:59');
    

    Kini, $endDateTime akan mempunyai format yang betul dan perbandingan anda seharusnya berfungsi seperti yang diharapkan.

    Berikut ialah kod yang dikemas kini:


    <?php
    $startDate = new DateTime($request_project->start_date);
    $endDate = new DateTime($request_project->end_date);
    $endDateTime = date('Y-m-d 23:59:59');
    $startDateString = $startDate->format('Y-m-d H:i:s');
    $endDateString = $endDate->format('Y-m-d H:i:s');
    
    if ($endDateString <= $endDateTime) {
        ?>
        <a href="#" class="btn btn-primary btn-hover w-100 mt-2" onclick="doSomething()">Apply Now <i
                    class="uil uil-arrow-right"></i></a>
        <?php
    } else {
        ?>
        <a href="#" class="btn btn-secondary btn-hover w-100 mt-2 disabled" onclick="doSomething()">Apply Now <i
                    class="uil uil-arrow-right"></i></a>
        <?php
    }
    ?>
    <a href="#" class="btn btn-soft-warning btn-hover w-100 mt-2 bookmark"
       id="<?= $request_project->id ?>"><i class="uil uil-bookmark"></i> Add Bookmark</a>
    

    Dengan pelarasan ini, kod kini sepatutnya melumpuhkan butang dengan betul apabila tarikh tamat melepasi tarikh hari ini.

    balas
    0
  • Batalbalas