php 如何只调用date()一次,然后以不同的格式显示多次

5kgi1eie  于 2023-04-28  发布在  PHP
关注(0)|答案(2)|浏览(83)

我有一个页面,我用它作为一个由树莓派驱动的数字标牌。该页面显示日期和时间以及显示当前天气。
我调用date()函数三次。一个是用于确定天气图标的白天还是晚上,另一个是以更大的数字显示时间,最后一个是显示当前日期。
有没有一种方法可以将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>
bzzcjhmw

bzzcjhmw1#

实际上不能这样做,因为传递给date()的是您希望显示它的格式。date()是你用来格式化日期的函数。
因此,您不能存储结果并再次使用它,因为结果是一个人类可读的字符串,很难转换回内部日期表示。您正在做的已经是最简单的(实际上,也是唯一的)方法,并且对您的性能影响最小。

bpzcxfmw

bpzcxfmw2#

有两种方法。
1.用time()获取一个时间戳,将其存储在变量中并调用date('YOUR_FORMAT',$timestamp);
1.在datetime对象上使用类\DateTime和方法format()
这两个选项的优点是,日期时间总是相同的,并且不会因为代码执行缓慢而改变。

相关问题