Day18 PHP的常用函数3:时间函数

时间函数

世界各国表示时间的方式不一样,存储不方便,计算不方便,不同的时间表示方式影响,不利於沟通和计算。
因此电脑中统一时间的方式是使用Unix时间戳。

  • 什麽是时间戳呢?

    • 之前:从1970年1月1日0时0分0秒开始到指定时间的秒数,时间戳属於整型数据类型,PHP的时间戳从1970年开始最大表示到2038年1月19日(32位)
    • 准确:有效的时间戳典型范围是格林威治时间 1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 03:14:07。 (此范围符合 32 位有符号整数的最小值和最大值)。
  • time():获取当前时间的时间戳,返回当前时间戳int

  • date():格式化(转换成你能看懂的格式)时间戳

    • 格式化时间字符常用:
      Y - 4位数的年
      d - 2位数的天
      m - 2位数的月份
      H - 小时 24小时格式
      m - 分钟 00-59
      s - 秒数 00-59
<?php
//time()  
$time = time();
var_dump($time);
echo '<hr>';

//date() 
//@param1 时间格式字符
//@param2 可选参数,该参数为要格式化的时间戳,如果没有设定,那麽默认是当前时间戳

$str = date('Y-m-d H:i:s'); //格式化当前时间
var_dump($str);
echo '<hr>';

//设定时间戳
$str = date('Y年m月d日 a:H-i-s', 1899484572); //格式化当前时间
var_dump($str);

  • 服务器默认的时间都是国际统一时间(格林威治时间),所以在使用服务器时需要设置当前服务器时区位於用於指定的时区
    1. 设定方法1:修改PHP配置文件 PHP.INI
      查找: ;date.timezone = ''
      设置选项:date.timezone = 大洲/城市
      PS. 1.必须在支持的时区列表中选取。
      2.设置之後必须重启apache.
[Date]
date.timezone = "Asia/Taipei"
  1. 设置方法2:修改PHP配置文件 php.ini
    查找:date.timezone = 'ETC/GMT-8';
    注意:必须在支持的时区列表中选取。
    设置之後必须重启apache

  2. 使用函数修改当前页面的时间
    使用date_default_timezone_set()函数来设置时区,其参数和配置文件中的date.timezone的值一样,现实中使用该方法时,会在每个页面的开始部分包含并且运行该函数。

    • date_default_timezone_set():通过函数设置当前页面的时区
  • getdate():获取当前时间(返回一个数组,参数年,月,日等都有)
  • micritime():获取当前时间(返回毫秒的时间戳)
  • mktime(H,i,s,m,d,Y):指定时间转为时间戳,参数为空的时候作用与time()相同(返回时间戳格式)
<?php
$date = getDate();
var_dump($date);
$timeUnix = mktime(10, 2, 5, 11, 5, 2021);
var_dump($timeUnix);
echo '<hr>';
$date = date('Y-m-d H:i:s', $timeUnix);
var_dump($date);
echo '<hr>';
$timeUnix = mktime(25, 80, 100, 15, 32, 2021);
var_dump($timeUnix);
echo '<hr>';
$date = date('Y-m-d H:i:s', $timeUnix);
var_dump($date);
echo '<hr>';
//2021 4 月  12日  
$timeUnix = mktime(0, 0, 0, 4, 12, 2021);
var_dump($timeUnix);
echo '<hr>';
$date = date('Y-m-d H:i:s', $timeUnix);
var_dump($date);

有一个时间常用的方式是这支程序运行多久,因此以下写一个例子:

<?php
//求执行时间
//1.获取开始时间
$startUnix = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
	# code...
}
//睡觉 ~~让程序睡觉 ,参数以秒为单位
//sleep(10);

//2.得到结束时间
$endUnix = microtime(true);
//3.结束时间 -  开始时间 = 执行时间
$queryUnix = $endUnix - $startUnix;
echo '当前页面一共运行了' . round($queryUnix, 2) . '秒';

Day18 Winnie的聊天室

今天聊了时间,其实时间一直都是程序中很重要的一环,要知道一个程序执行多久就是效率!
效率:

  • 程序运行时间少
  • 程序占据的内存少
    但是实际测试会有一些限制,例如电脑配备、环境等,不过也是有方式解决的,虽然我还没有进阶到那种程度,无法分享,但有一天一定能来分享!

<<:  Progressive Web App 闲置中: Idle Detection API 空闲检测入门实做 (20)

>>:  【学习笔记-CSS】background 各属性

Day 18:广度优先搜寻(BFS)

上一回提到广度优先搜寻的步骤是检查图中节点,并将与其相连的节点放入伫列中,再一一检查。 光是这样的文...

Day01 - 开赛

想写这系列文章的目的 蛮多人问 Asp.Net MVC Model Binding 的相关问题,特别...

Thunkable学习笔记 8 - Data Viewer List 想做资产盘点(一)

Thunkable能做资产盘点吗? 也不确定能否成功, 边做边想边调整, 准备资料先 搬出barco...

Netlify CMS : 完全就是为了 JAMstack 而设计的 CMS 系统

Netlify CMS 完全就是为了 JAMstack 而设计的 CMS 系统 前面分享了直接使用第...

Day 20: Convolutional Neural Networks — 卷积神经网路初探(上)

卷积神经网路 Convolutional Neural Networks 卷积神经网路(CNN)又被...