书山有路勤为径,学海无涯苦作舟。
目录
- 一、时间日期类型的面试题长什么样子?
- 1. 写出获取当前时间戳的函数,及打印前一天的时间的方法(格式:年-月-日 时:分:秒)
- 2. 写出一个函数,参数为年份和月份,输出结果为指定月的天数
- 二、知识总结
- 1. 配置时区
- 2.`time()` `microtime()` 时间戳 毫秒
- 3. `date()` 格式化时间戳
- 4. `mktime()` 获取一个日期的时间戳
- 五、评论区作业
- 六、总结
一、时间日期类型的面试题长什么样子?
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);
他会自动增加月份,判断每月几号,判断闰年,最终得到完美的时间戳。
五、评论区作业
输出是最好的输入,如果你对着小黄鸭都说不明白,怎么又能指望你能自己明白呢?
- 如何实现一个日历同时展示多个国家的时间?
欢迎你在第一时间把思路写在评论区,最好不查资料。
六、总结
面试阶段对于时间日期的考察,一般是计算时间和格式化指定日期,我们需要额外记住的是几个常用的日期格式化样式即可。
希望大家都能通过心仪的面试~