2013-03-22 18 views
9

Takvim komut dosyasını mysql veritabanından dışarı çıkarmak ve sayfada görüntülemek için aşağıdaki komut dosyasını kullanıyorum. Ben standart MySQL tarih biçiminden tarihi biçimlendirmek yeniden çalışıyor ama veritabanından alınırken duyuyorum aşağıdaki hatayı alıyorum:Uyarı: date_format() 1 parametresinin DateTime olmasını bekliyor

Warning: date_format() expects parameter 1 to be DateTime, string given in C:\easyphp\www\twinfocus\managecalendar.php on line 24 

Warning: date_format() expects parameter 1 to be DateTime, string given in C:\easyphp\www\twinfocus\managecalendar.php on line 24 

Warning: date_format() expects parameter 1 to be DateTime, string given in C:\easyphp\www\twinfocus\managecalendar.php on line 24 

Warning: date_format() expects parameter 1 to be DateTime, string given in C:\easyphp\www\twinfocus\managecalendar.php on line 24 

Veritabanı (gördüğünüz gibi tarih doğru saklanır): enter image description here

komut: Bu fonksiyon için DateTime nesnesi geçmesi gerekiyor

<?php 
    $sql2 = <<<SQL 
     SELECT * 
     FROM `calendar` 
    SQL; 
    if(!$result2 = $db->query($sql2)){ die('There was an error running the query [' . $db->error . ']');} 
    echo '<table class="admintable"> <thead>'; 
    echo '<tr><th>Client Names</th><th>Email</th><th>Tel</th><th>Wedding Date</th><th>Date Created</th><th>Start Time</th><th>End Time</th><th>Price</th><th>Location</th><th>Other Info</th><th>Edit</th><th>Delete</th></tr></thead>'; 
    while($row2 = $result2->fetch_assoc()){ 
    $weddingdate = $row2['weddingdate']; 
    $formattedweddingdate = date_format($weddingdate, 'd-m-Y'); 
    echo '<tr><td>'.$row2['name'].'</td><td>'.$row2['email'].'</td><td>'.$row2['tel'].'</td><td style="min-width:70px;">'.$formattedweddingdate.'</td><td style="min-width:70px;">'.$row2['datecreated'].'</td><td>'.$row2['starttime'].'</td><td>'.$row2['endtime'].'</td><td>&pound;'.$row2['price'].'</td><td>'.$row2['location'].'</td><td style="min-width:400px;">'.$row2['otherinfo'].'</td><td><a href="managecalendar.php?&key='.$key.'&editwedding='.$row2['id'].'">Edit</a></td><td><a href="calenderdelete.php?&key='.$key.'&delwedding='.$row2['id'].'">Delete</a></td></tr>';} 
    echo '</table>'; 

?> 
+1

date ($ weddingdate, 'd-m-Y'); –

+1

@Pramod Sizin parametreniz yanlış yoldur ... – Clive

+7

Bence insanlar uyarı gördüklerinde panikliyorlar ve okumazlar. Uyarı, fonksiyonun "DateTime" örneğini beklediğini ancak "string" kelimesini değiştirdiğini ve böylece '$ weddingdate' değişkeninin tarih dizgisini içerdiğini söyler, böylece ihtiyacınız olan tüm şey DateTime öğesinin nesnesi oluşturmaktır (örneğin 'date_format (yeni DateTime ($) weddingdate), $ requestedFormat) ') – Leri

cevap

16

iyi yolu tarihinizi dönüştürmek için DateTime nesneyi kullanmaktır.

$myDateTime = DateTime::createFromFormat('Y-m-d', $weddingdate); 
$formattedweddingdate = $myDateTime->format('d-m-Y'); 

Not: Sadece> = 5.3.0 PHP 5 için destekleyecektir.

+0

Teşekkürler, şimdi anladı! :-) –

+0

Bunun ne "yerel" olarak kapalı olduğunu bilmiyorum - kesinlikle sorunumu çözdüm. – russellmania

9

. kılavuza bakın:

date_format (new DateTime($time), 'd-m-Y'); 

Ya da kullanabilirsiniz:: php

string date_format (DateTime $object , string $format) 

kullanarak deneyebilirsiniz

$date = date_create('2000-01-01'); 
echo date_format($date, 'Y-m-d H:i:s'); 
9

Neden bunu böyle kalkmayın:

$Weddingdate = new DateTime($row2['weddingdate']); 
$formattedweddingdate = date_format($Weddingdate, 'd-m-Y'); 

Ya da sadece seversiniz edebilirsiniz:

$Weddingdate = new DateTime($row2['weddingdate']); 
echo $Weddingdate->format('d-m-Y'); 
0

sean662'nin 3. çözümünü denedim ve şimdi bir INSERT sql'de saklanan now() işleviyle çalıştı ve sonra date_create() işlevindeki bir değer. Bundan sonra değişken date_format() işlevinden geçirilir ve beğendiğiniz tarih sırasına sahip olabilirsiniz.

İlgili konular