2017-10-18 1 views
0

ラズベリーパイによって駆動されるデジタルサインとして使用するページがあります。このページには現在の天気だけでなく、日時も表示されます。date()を一度だけ呼び出す方法、さまざまな形式で複数回表示する方法

私はdate()関数を3回別々に呼び出しています。 1つは天気アイコンのための昼夜かどうかを決定するためのもので、もう1つは時間を大きな数字で表示するもので、最後は現在の日付を表示するものです。

date()を1つの変数に保存する方法はありますか?次に3つの異なる方法を使用しますか?あなたがdate()に渡すことはあなたがそれを表示する形式であるため、

<?php 
$page = $_SERVER['PHP_SELF']; 
$sec = "10"; 
//header("Refresh: $sec; url=$page"); 
$bg = array(); // create an empty array 
$directory = "images/"; //the directory all the images are in 
$images = glob($directory . "*.jpg"); //grab all of the images out of the directory with .jpg extention 

foreach($images as $image) 
{ 
    $bg[] = $image;//populate the empty array with an array of all images in the directory folder 
} 

    $i = rand(0, count($bg)-1); // generate random number size of the array 
    $selectedBg = "$bg[$i]"; // set variable equal to which random filename was chosen 

    $json_string="http://api.openweathermap.org/data/2.5/weather?lat=49.1985&lon=-113.302&appid=b29961db19171a5d4876c08caea9af0d&units=metric"; 
    $jsondata = file_get_contents($json_string); 
    $obj = json_decode($jsondata, true); 
    $now = date('U'); //get current time 
    $temp = round($obj['main']['temp']); 

    if($now > $obj['sys']['sunrise'] and $now < $obj['sys']['sunset']){ 
    $suffix = '-d'; 
    }else{ 
    $suffix = '-n'; 
    } 

?> 

<div id="todaysdatetime"> 
    <div id="todaystime"> 
    <span><?php echo(date("g:i A"));?></span> 
    </div> 
    <div id="todaysdate"> 
    <span><?php echo(date("l\, F j<\s\up>S</\s\up>"));echo ' &nbsp;&nbsp; <i class="owf owf-', $obj['weather'][0]['id'].$suffix, '"></i> ', $temp, '&deg;C'; ?></span> 
    </div> 

</div> 
+4

3つの 'date()'呼び出しでは、実際にHTTPリクエストを行っているときに、コードの実行速度が遅くなることはありません。なぜコードが遅いのか推測しないで、ベンチマークしてください。 – CodeCaster

+1

ベンチマークであるかどうかにかかわらず、いくつかの日付の呼び出しが目立つ量だけ何かを遅らせるというアイデアは、単に馬鹿げたものです。 – CBroe

+0

@CBroeお役立ち情報私はちょうどそれが私のPCよりもπの方が遅くなるかもしれない理由について、この時点で推測しています。 – ShemSeger

答えて

1

あなたは本当に、これを行うことはできません。date()は、日付をフォーマットするために呼び出す関数です。

結果を格納することはできません。その結果は人間が読める文字列であり、内部日付表現に変換するのが難しいためです。あなたがやっていることは、すでにそれを行うのが最も簡単な(そして実際は唯一の)方法であり、あなたのパフォーマンスにはほとんど影響を与えません。

1

2つの方法があります。

  1. 変数とコール日付(「YOUR_FORMAT」、$タイムスタンプ)でtime()店にそれをしてタイムスタンプを取得します。 DateTimeオブジェクトの
  2. 使用クラス\DateTimeと使用方法format()

これら二つのオプションは常に同じになりますDATETIMEこの利点を持っており、それが原因で、コードの遅い実行の変更はありません。

関連する問題