24

次のスクリプトを使用して、カレンダー情報を mysql データベースから取得し、ページに表示しています。標準のMysql日付形式から日付を再フォーマットしようとしていますが、データベースから取得するときに次のエラーが発生します:

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

データベース(日付が正しく保存されていることがわかります): ここに画像の説明を入力

スクリプト :

<?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>';

?>
4

6 に答える 6

32

最良の方法は、DateTimeオブジェクトを使用して日付を変換することです。

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

注: PHP 5>=5.3.0のみをサポートします。

于 2013-03-22T10:24:20.920 に答える
25

この関数にDateTimeオブジェクトを渡す必要があります。マニュアルを参照してください: php

string date_format ( DateTime $object , string $format )

あなたは使用してみることができます:

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

または、次を使用することもできます。

$date = date_create('2000-01-01');
echo date_format($date, 'Y-m-d H:i:s');
于 2013-03-22T10:24:10.000 に答える
14

このように試してみませんか:

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

または、次のようにすることもできます:

$Weddingdate = new DateTime($row2['weddingdate']);
echo $Weddingdate->format('d-m-Y');
于 2013-03-22T10:24:11.047 に答える
0

私はsean662の3番目のソリューションを試し、INSERT sqlに格納されたnow()関数を使用し、date_create()関数の値を使用しました。その後、変数は date_format() 関数を介して渡され、好きな日付順にすることができます。

于 2016-08-30T20:19:16.417 に答える