Format tanggal pada cakephp 3.0

Saya mencoba mengubah waktu pengiriman cakephp tetapi saya tidak dapat melakukannya. Ketika saya mencoba mengonversi output, beri saya tanggal 01-01-1970.

Saya menulis beberapa gema dalam gaya berbeda untuk melihat hasilnya. Cetak tangkapan layar

masukkan deskripsi gambar di sini

Halaman:

<tfoot>
        <tr>
        <?php 
        $data = date('d-m-Y');
        //$data2 = new DateTime($ementas['data_ementa']);
        ?>
            <td class="marcacaobutton button-<?=$ementas['id']?>">
                <?php 
                echo date('d-m-Y',strtotime($data));
                echo "<br>";
                echo date('d-m-Y',strtotime($ementas['data_ementa']));
                echo "<br>";
                echo $ementas['data_ementa'];
                echo "<br>";
                    if(date('d-m-Y',strtotime($data)) > date('d-m-Y',strtotime($ementas['data_ementa'])) && $query['status']=='desmarcada')
                    {
                        echo '1';
                        //echo "<td>".$this->Html->link(__('Bloquear'),'/admin/users/bloquear/'.$user['id'],['class' => 'btn btn-danger btn-sm'])."</td>";
                    }
                    else if(date('d-m-Y',strtotime($data)) > date('d-m-Y',strtotime($ementas['data_ementa'])) && $query['status']=='marcada')
                    {
                        echo '2';
                    }
                    else if(date('d-m-Y',strtotime($data)) < date('d-m-Y',strtotime($ementas['data_ementa'])) && $query['status']=='desmarcada')
                    {
                        echo '3<button type="button" class="marcar" id="marcar-'.$ementas['id'].'" >Marcar</button>';
                        //echo "<td>".$this->Html->link(__('Bloquear'),'/admin/users/bloquear/'.$user['id'],['class' => 'btn btn-danger btn-sm'])."</td>";
                    }
                    else if(date('d-m-Y',strtotime($data)) < date('d-m-Y',strtotime($ementas['data_ementa'])) && $query['status']=='marcada')
                    {
                        echo '4<button type="button" class="desmarcar" id="desmarcar-'.$ementas['id'].'">Desmarcar</button>';
                        //echo "<td>".$this->Html->link(__('Ativar'),'/admin/users/ativar/'.$user['id'],['class' => 'btn btn-success btn-sm'])."</td>";
                    }
                ?>
            </td>
        </tr>
    </tfoot>

Pengontrol:

public function marcar($id)
{
    $this->loadModel('Refeicoes');
    $id_user = $this->request->session()->read('Auth.User.id');
    $ementa = $this->Ementas->get($id);
    //die(debug($ementa));
    $id_ementa = $ementa->id;
    //  die(debug($id_ementa));

    $query = $this->Refeicoes->find('all', [
        'conditions' => ['Refeicoes.user_id LIKE' => $id_user, 'Refeicoes.ementa_id LIKE' => $id_ementa]
    ]);
    $number = $query->count();
    //die(debug($number));
    $date =  new Time();
    if ($number == 0) {

        $marc_refeicao = $this->Refeicoes->newEntity();
        $marc_refeicao = $this->Refeicoes->patchEntity($marc_refeicao, array('user_id' => $id_user, 'data' => $date, 'status' => 'desmarcada'));
        $marc_refeicao->ementa_id = $id_ementa;
        //die(debug($marc_refeicao));
        $this->Refeicoes->save($marc_refeicao);
    }

    $ementas = $ementa; 
    $query1 = $this->Refeicoes->get($id);
    //die(debug($ementas));   
    $this->set('ementas',$ementas); 
    $this->set('query',$query1);

}

person Denis Ciprian Otoroschi    schedule 19.06.2017    source sumber


Jawaban (2)


Saya berharap lokal Anda menyebabkan objek tanggal memformat keluaran dengan cara yang tidak disukai strtotime sebagai masukan. Adakah alasan khusus Anda menggunakan strtotime di mana saja alih-alih membiarkan objek data melakukan tugasnya?

<?php
echo $data->format('d-m-Y');
echo "<br>";
echo $ementas['data_ementa']->format('d-m-Y');
echo "<br>";
echo $ementas['data_ementa'];
echo "<br>";
if($data > $ementas['data_ementa'] && $query['status']=='desmarcada')
{
    echo '1';
}
else if($data > $ementas['data_ementa'] && $query['status']=='marcada')
{
    echo '2';
}
else if($data < $ementas['data_ementa'] && $query['status']=='desmarcada')
{
    echo '3<button type="button" class="marcar" id="marcar-'.$ementas['id'].'" >Marcar</button>';
}
else if($data < $ementas['data_ementa'] && $query['status']=='marcada')
{
    echo '4<button type="button" class="desmarcar" id="desmarcar-'.$ementas['id'].'">Desmarcar</button>';
}
?>
person Greg Schmidt    schedule 19.06.2017
comment
Format databasenya seperti YYYY-mm-dd. Dan jika saya melakukan echo format kue yang akan dicetak seperti dd/mm/YY, seperti terlihat pada print screen yang saya buat. Gema pertama adalah hari ini. Yang kedua adalah tanggal format dari database. Yang ketiga adalah gema tanggal dari database. Saya menggunakan strtotime untuk mencoba memformat data. - person Denis Ciprian Otoroschi; 20.06.2017
comment
Mungkinkah karena cara saya mengirim data dari pengontrol ke tampilan? - person Denis Ciprian Otoroschi; 20.06.2017
comment
Ketika tanggal dibaca dari database, Cake harus mengubahnya menjadi sebuah objek, yang dapat melakukan pemformatan, perbandingan, dll tanpa memerlukan strtotime. Jika Anda pr($ementas['data_ementa']); Anda akan melihatnya sebagai objek, bukan string, dan kode saya di atas akan menunjukkan bagaimana Anda dapat menggunakannya untuk tujuan Anda. Jika pr menampilkannya sebagai string, maka masalahnya ada di tempat lain, mungkin di pengaturan database atau skema Anda (misalnya jika Anda menyimpannya di kolom string, bukan di kolom tanggal). - person Greg Schmidt; 20.06.2017
comment
Yup, itu dicetak sebagai sebuah objek. Objek Kue\I18n\FrozenDate ( [waktu] =› 29-06-2017T00:00:00+00:00 [zona waktu] =› UTC [waktu Sekarang Tetap] =› ) - person Denis Ciprian Otoroschi; 20.06.2017
comment
Dan sudahkah Anda mencoba perubahan kode saya di atas untuk melihat apakah perubahan tersebut menyelesaikan masalah Anda? - person Greg Schmidt; 20.06.2017
comment
Ya, itu memberikan kesalahan Panggilan ke fungsi anggota format() pada string - person Denis Ciprian Otoroschi; 21.06.2017
comment
Memecahkan masalah. Saya menggunakan $data = date('d-m-Y'); jadi saya mengubahnya menjadi $data = new DateTime(); Terima kasih atas waktunya. Sangat dihargai :) - person Denis Ciprian Otoroschi; 21.06.2017

Sudahkah Anda melihat ke kelas Cake\I18n\Time. Ini sangat berguna ketika berhadapan dengan Tanggal/Waktu, Anda masih akan memiliki format yang sama di database seperti "28-02-2017 18:23:02" tetapi jika Anda ingin merender "28 Feb 2017, 18:23 " maka Anda dapat menggunakan fungsi I18 "nice()" di file .ctp Anda.

Simak dokumentasinya pada tautan di bawah ini...

https://book.cakephp.org/3.0/en/core-libraries/time.html#Cake\I18n\Time::bagus

Semoga ini membantu

person Rod    schedule 20.06.2017