PHP SQL bir zaman damgası biçimlendirmek için basit yolu nedir?

7 Cevap php

Çıkışı (örneğin, "27 Ekim 2006" gibi) kullanıcı dostu bir formatta olduğu gibi aşağıdaki PHP kodu tamamlamak için basit, en hızlı yolu nedir?

$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = ???($row['my_timestamp']);
echo $formatted_date;

7 Cevap

Sen, senin için bunu yapmak için MySQL kullanabilirsiniz

$result = mysql_query("SELECT DATE_FORMAT(my_timestamp, '%M %d, %Y) AS my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = $row['my_timestamp'];
echo $formatted_date;

Ya da, PHP kullanabilirsiniz

$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = strftime('%B %d, %y', $row['my_timestamp']);
echo $formatted_date;

Eğer bir seçim var. Siz PHP date() işlevini kullanmak ve MySQL çıktı işlemek veya MySQL date_format() işlevi kullanmak ve onunla başlamak için biçimlendirilmiş bir dize döndürmek olabilir olabilir.

Benim durumumda bu gerçekten kullandığınız önemli değil, ama tutarlı olmak olmamasıdır. Farklı biçimlendirme parametreleri var, bu yüzden belirli bir uygulamada hem de kullanmak eğer 'W' size yıl hafta veya haftanın gün ismini verirse hatırlamaya çalışırken çok fazla zaman harcarsınız.

Veritabanı için biçimlendirme yapmak var. Bir dize okuma ve dönüştürme değil, çünkü çok daha az duyarlı hata olduğunu. Bunun yerine, veritabanı bir dize kendi özgün biçiminde gidiyor.

I Aron 's answer gibi, SQL tarih biçimlendirme yapmak eğilimindedir. PHP tarihlerde, ben üzerinden DateTime nesnesi (PHP5 +) kullanmayı tercih rağmen date:

$timestamp = new DateTime($row['my_timestamp']);
echo $timestamp->format('F j, Y') . '<br />';
echo $timestamp->format('F j, Y g:ia');

Sen date() fonksiyonunu istiyorum.

Bir TARİH veya DATETIME sütun var ise, size tarih işlevini kullanmak için bir unix zaman damgası dönüştürmek için Sütunum AS SELECT UNIX_TIMESTAMP (Sütunum) kullanabilirsiniz.

Kesinlikle DateTime sınıfı kullanmanız gerekir (ya da herhangi bir ev eşdeğer sınıf büyüdü), de Tarih fonksiyonu üzerinde ve damgalarını kullanmayın:

  • Zaman Damgası 1970 öncesi tarihler için tüm ortamlarda iyi çalışmıyor - Eğer doğum günü ile uğraşmak durumunda, kod dayanarak konum bazı sunucularda kırılabilir ki
  • Ayrıca strftime'da kullanımı çok dikkatli olun, güzel bir fonksiyonu gibi görünüyor, ama bu süreç geniş setlocale bağlıdır gibi, çok unrelyable olduğunu. Bu ne demektir, sunucu bir pencere kutu ise, işlemci başına bir süreç var, ve sonra geri kalanı çok parçacıklı olmasıdır - başka bir deyişle, bir komut bir setlocale aynı işlemci üzerine diğer komut etkileyecek - çok kötü !

... Eğer sadece İngilizce ortamda olmadıkça günün sonunda, zaman damgaları güvenmeyin, ve 1970 ve sadece 2032 Tarihleri ​​arasında anlaşma!

I kullanın:

date ("F j, Y", strtotime ($ row ['my_timestamp']))

datetime olarak Date_Format (alan, '% d% M% Y'): veya SELECT değiştirebilirsiniz