Konversi DateTime ke String PHP


225

Saya sudah meneliti banyak situs tentang bagaimana saya bisa mengubah objek PHP DateTime ke String. Saya selalu melihat "String to DateTime" dan bukan "DateTime to String"

PHP DateTime dapat digaungkan, tetapi apa yang ingin saya proses DateTime saya dengan fungsi string PHP.

Pertanyaan saya adalah bagaimana saya bisa membuat objek PHP dateTime ke string mulai dari kode semacam ini:

$dts = new DateTime(); //this returns the current date time
echo strlen($dts);

2
Mengapa Anda ingin memproses DateTime Anda dengan fungsi string? Apa yang ingin Anda capai?
mgiuffrida

2
semacam validator datetime? dalam php
Netorica

Jawaban:


413

Anda dapat menggunakan formatmetode DateTimekelas:

$date = new DateTime('2000-01-01');
$result = $date->format('Y-m-d H:i:s');

Jika formatgagal karena alasan tertentu, itu akan kembali FALSE. Dalam beberapa aplikasi, mungkin masuk akal untuk menangani kasus yang gagal:

if ($result) {
  echo $result;
} else { // format failed
  echo "Unknown Time";
}

3
+1 Ini berfungsi. Bisakah Anda juga memberi tahu cara memeriksa nol (di baris yang sama) sebelum melakukan konversi ini. Terima kasih!
Watt

2
Hey @Watt, poin bagus! Saya telah memperluas contoh untuk menunjukkan bagaimana kasus gagal dapat ditangani.
rjz

3
Anda lupa zona waktu, bukan menggunakan $date->format('c')atau $date->format('Y-m-d H:i:s Z')atau$date->format('Y-m-d H:i:s T')
Timo Huovinen

1
apa menggunakan pernyataan yang Anda butuhkan untuk dapat menggunakan -> format? Dikatakan kehilangan sesuatu di Zend
Chemist

1
Anda dapat menggunakan formulir yang lebih singkat ini $result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s');sejak PHP 5.4. Tonton di sini: docs.php.net/manual/en/migration54.new-features.php Akses anggota kelas pada instantiasi telah ditambahkan, misalnya (Foo baru) -> bar ().
FFirmenich

17

Cara paling sederhana yang saya temukan adalah:

$date   = new DateTime(); //this returns the current date time
$result = $date->format('Y-m-d-H-i-s');
echo $result . "<br>";
$krr    = explode('-', $result);
$result = implode("", $krr);
echo $result;

Saya harap ini membantu.



15

Ada beberapa format yang telah ditentukan date_d.phpuntuk digunakan dengan formatseperti:

define ('DATE_ATOM', "Y-m-d\TH:i:sP");
define ('DATE_COOKIE', "l, d-M-y H:i:s T");
define ('DATE_ISO8601', "Y-m-d\TH:i:sO");
define ('DATE_RFC822', "D, d M y H:i:s O");
define ('DATE_RFC850', "l, d-M-y H:i:s T");
define ('DATE_RFC1036', "D, d M y H:i:s O");
define ('DATE_RFC1123', "D, d M Y H:i:s O");
define ('DATE_RFC2822', "D, d M Y H:i:s O");
define ('DATE_RFC3339', "Y-m-d\TH:i:sP");
define ('DATE_RSS', "D, d M Y H:i:s O");
define ('DATE_W3C', "Y-m-d\TH:i:sP");

Gunakan seperti ini:

$date = new \DateTime();
$string = $date->format(DATE_RFC2822);

3
Anda dapat menggunakan konstanta DateTime (misalnya DateTime :: ISO8601), itu membuat kode lebih mudah dibaca.
Anh-Tuan Mai

2

Cara yang lebih pendek menggunakan daftar. Dan Anda dapat melakukan apa yang Anda inginkan dengan setiap komponen tanggal.

list($day,$month,$year,$hour,$min,$sec) = explode("/",date('d/m/Y/h/i/s'));
echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec;

2

Ini bekerja untuk saya

$start_time   = date_create_from_format('Y-m-d H:i:s', $start_time);
$current_date = new DateTime();
$diff         = $start_time->diff($current_date);
$aa           = (string)$diff->format('%R%a');
echo gettype($aa);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.