2012-01-13 3 views
0

私はこれが誰かのためのパイになることを望んでいます!文字列の出力は現在、すべての午前12時です。PHP - HH:MM:SSを12時間にフォーマットするHH:MM:文字列

形式HHでのMySQLから次のコード:MM:SS(hours_open、hours_closed)

$get_hours_sql = "SELECT * FROM client_hours ORDER BY day"; 
$get_hours_res = mysqli_query($dbConnect, $get_hours_sql) or die(mysqli_error($dbConnect)); 

// Establish the output variable 
$hoursList = '<div class="right_bar">'; 
while ($productList = mysqli_fetch_array($get_hours_res)) { 
    $id_hours = $productList['id_hours']; 
    $day = $productList['product_name']; 
    $open = $productList['hours_open']; 
    $close = $productList['hours_close']; 

    $hoursList .= ''.date("g:ia", $open).' - '.date("g:ia", $close).'<br/>'; 
} 

$hoursList .= '</div>'; 

echo $hoursList; 

出力は現在

午前12:00です - 午前12:00

ループした。

私は

11:00に出力を取得したい - データベースエントリを表すことになり午後11時

ありがとうございます!

+0

タイムスタンプが正しく保存されていますか?あなたのコードには、データベースに保存されている時間が表示されます。 – Tiddo

+3

'$ productList ['hours_open'];'と '$ productList ['hours_close'];'には何も言わないでください。私たちは盲目的に推測するのが好きです。 – Wrikken

+0

素晴らしいPHPマニュアルを熟読すれば、それはあなたのためのパイの一部になると確信しています:) – rdlowrey

答えて

1

私はいつもPHP < - > MySqlの日付処理fiddly(5.3で良くなっています)を見つける。

私の推測では、mysqlクエリは日付を文字列として返し、date()はタイムスタンプを期待しています。

多くの場合、私はちょうどmysqlは私のために文字列として日付をフォーマットし、そのように、追加のフィールドとしてそれを返すために得る:

$get_hours_sql = "SELECT *,date_format(hours_open,'%h:%i %p') as hours_open_formatted, date_format(hours_close,'%h:%i %p') as hours_close_formatted FROM client_hours ORDER BY day"; 

そしてちょうどフォーマットされたフィールドを使用します。

$hoursList .= ''.$productList['hours_open_formatted'].' - '.$productList['hours_close_formatted'].'<br/>'; 
+0

私が今述べたように、私はテーブルに格納されているデータ型を変更できます。既存の方法を使用するにはどのタイプを使用する必要がありますか? – Tom

+0

@ user1108993データベースのタイプを変更する必要はありません。私のメソッドは、mysqlの日付書式化機能を使用して、表示する正確な形式で日付を返します。 – Ben

+0

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format – Ben

1

データは、2番目のパラメータとしてUnixのタイムスタンプを受け取るので、単純に何をしようとしても機能しません。 mysqlのTIME_TO_SEC関数、またはPHPのmktimeを使用して、時間文字列をUnixタイムスタンプに変換することができます。

例:

$openHours = explode(':',$productList['hours_open']); 
$timestamp = mktime($openHours[0],$openHours[1]); 
$yourDate = date("g:ia",$timestamp); 

編集:私はあなたがベンの答えをしようとすべきだと思う、私はそれは私のものよりもよりよい解決策だと思います。

+0

データベースの入力は私のものなので、データ型を簡単に変更できます。このメソッドを動作させるにはどうすればよいですか? TIME - >? – Tom

+0

現在どのように時間を保存していますか? – Tiddo

+0

explode( ':'、$ productList ['product_name'])?あなたは[hours_open]を意味しました、そうですか? – Ben

関連する問題