书山有路勤为径,学海无涯苦作舟。


PHP面试题精讲—2021—时间日期格式化在实际项目的应用_时间戳


目录


一、时间日期类型的面试题长什么样子?

1. 写出获取当前时间戳的函数,及打印前一天的时间的方法(格式:年-月-日 时:分:秒)

Time();

Date(“Y-m-d H:i:s”,Strtotime(“-1 day”));

2. 写出一个函数,参数为年份和月份,输出结果为指定月的天数

function mmm($year,$month){
echo date(“t”,strtotime($year.”-”.$month.”-1”));
}

二、知识总结

1. 配置时区

时区是开始一个项目最早的配置项,因为如果你的时区配置不对的话,涉及到时间戳的时间转换,以及输出格式化时间字符串就会有问题。

ini_set('date.timezone', 'Asia/Shanghai');

2.​​time()​​​ ​​microtime()​​ 时间戳 毫秒

time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。

​time()​​函数在实际项目中的使用频率非常高,比如创建时间,更新时间,都会长期使用的。

服务器的时间精度一般是秒级的,但是有的时候比如物联网设备也需要毫秒级的精度。

microtime()

function mkmicrotime() {
  list($msec, $sec) = explode(' ', microtime());
  $msectime = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);  return $msectime;
}

3. ​​date()​​ 格式化时间戳

​date()​​函数的实际应用场景也是非常非常普遍的,最常见的用法是格式化成年月日时分秒。

date("Y-m-d H:i:s");

除了这个格式最适合国内阅读之外,这也是mysql写入datetime的格式。

此外,除了经典格式化之外,还有

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day z '); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // It is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month
$today = date("H:i:s"); // 17:16:17

4. ​​mktime()​​ 获取一个日期的时间戳

这个函数的最大作用是计算日期!非常好用!

比如,你需要得到创建当前时间一年零一天的时间戳,单纯的去加时间戳是不对的,因为可能会有闰年的出现。

这时候只要配置date函数格式化当前日期的值,在对应的位置上做加减即可。

echo mktime(date('h'),date('i'),date('s'),date('m'),date('d')+1,date('Y')+1);

他会自动增加月份,判断每月几号,判断闰年,最终得到完美的时间戳。

PHP面试题精讲—2021—时间日期格式化在实际项目的应用_获取当前时间_02

五、评论区作业

输出是最好的输入,如果你对着小黄鸭都说不明白,怎么又能指望你能自己明白呢?

  1. 如何实现一个日历同时展示多个国家的时间?
    欢迎你在第一时间把思路写在评论区,最好不查资料

六、总结

面试阶段对于时间日期的考察,一般是计算时间和格式化指定日期,我们需要额外记住的是几个常用的日期格式化样式即可。

希望大家都能通过心仪的面试~