PHP / MySQL: DD Ay, YYYY YYYY-MM-DD dönüştürme?

7 Cevap php

YYYY-AA-GG: Ben bir MySQL tablo bu formatta tarihini temsil eden bir TARİH sütun var.

Ben PHP kullanarak veritabanından tarih almak, ancak bu gibi görüntülemek için wanto: DD ay, YYYY.

'2009-04-13 örneğin ''13 Nisan 2009'.

Cadı bunu yapmak için en iyi yoldur? (Ben DB tarihi almak için biliyorum. Ben sadece onu dönüştürmek için bilmek gerekir)

Ben de İspanyolca ay adlarını görüntülemek gerekir. Strplc ya da buna benzer bir şey kullanarak her ay çeviri olmadan bunu yapmak için bir yol var?

Ben programlama yeniyim, detaylı olun.

Teşekkürler!

7 Cevap

MySQL DATE_FORMAT() fonksiyonuna bakın. Ben bunu yapmak için en iyi yolu sanırım.

Ayrıca, bu yapabilirsiniz:

  • DB tarihinizi getir
  • Unix zaman dönüştürmek için, strtotime PHP kullanın
  • Sonra date kullanarak saati biçimlendirmek.

Eğer setlocale PHP ile kendi yerel ayarladığınızda tarih kullanılarak () Eğer İspanyolca ay adlarını almak mümkün olacak.

Ayrıca seçin, MySql UNIX_TIMESTAMP (tarih) kullanılarak) (bölümünü strtotime atlayın. Ama bu bir MySQL belirli bir işlevi olduğunu ve gelecekte taşınabilir olmayabilir unutmayın.

MySQL sorguları aşağıdaki komutu çalıştırın:

SET lc_time_names = 'es_ES';
SELECT DATE_FORMAT(t.date,'%e de %M, %Y') FROM your_table t ...

MySQLi sayesinde olacak:

$mysqli->query("SET lc_time_names = 'es_ES'");
$stmt = $mysqli->prepare("SELECT DATE_FORMAT(t.date,'%e de %M, %Y') FROM your_table t ...where id = ?");
...

Ben MySQL, PHP bunu yapardım. DateTime::format sana sorun PHP'nin kullanıyor mu?

Henüz söz konusu değil başka bir seçenek:

SQL:

SELECT UNIX_TIMESTAMP(date) FROM table

PHP:

print date('your format', $timestamp_from_the_db);

Şahsen ben UNIX zaman damgası formatta tarih depolama için MySQL tamsayı veri türlerini kullanmak ister. Ben PHP kadar bu tamsayı tüm işleme bırakın. Mümkün olduğunca basit tabloları ve sorguları tutulması her zaman bana hizmet vermiştir. Ağırlıklı olarak, yazıyorum kodu, tarih onlara yapılan hesaplama çeşit var. Bu, tüm PHP tarafında ve her zaman damgası UNIX biçimde yapılır. UNIX zaman damgası biçimi dışında bir şey tarihlerini saklamak veya alınırken sadece sokulmak hataları için başka bir adım anlamına geliyor ve sorgu az modüler yapar. Bir tarih biçimlendirilmiş en iyi nasıl görüntülenen önce son dakikaya kadar bırakılır. Bu sadece benim düşüncem, ama çıkarma sonra DB değerini işleyemiyor aşırı durumlar olmadıkça, bir tarih SQL tarafı biçimlendirilmiş edilmemelidir.

Basitleştirilmiş bir örnek:

<?php

$date = now();
$dueDate = $date + 60*60*24*7; // One week from now

$sqlInsert = "INSERT INTO reports SET `dueDate` = $date";
$resInsert = mysql_query( $sqlInsert );

$sqlSelect = "SELECT `dueDate` FROM reports";
$resSelect = mysql_query( $sqlSelect );
$rowSelect = mysql_fetch_array( $resSelect );

$DB_dueDate = $rowSelect['dueDate'];

$daysUntilDue = ( $DB_dueDate - now() ) / 60*60*24;

$formattedDueDate = date( "j F, Y", $DB_dueDate );

?>

The report is due on <?=$formattedDueDate?>.  That is <?=$daysUntilDue?> from now.

Basit yolu UNIX zaman damgası giriş normalleştirmek için strtotime() işlevini kullanmaktır.

Sonra istediğiniz herhangi bir formatta çıkış tarihi için date() işlevini kullanın. Eğer bugüne kadar ikinci argüman () olarak UNIX zaman damgası geçmesi gerektiğini unutmayın.