本文已参与【新人创作礼】活动 ,一起开启掘金创作之路
# 1、getdate() 函数
定义和用法
getdate() 函数返回某个时间戳或者当前本地的日期/时间的日期/时间信息。
语法
getdate(timestamp);
| 参数 | 描述 |
|---|---|
| timestamp | 可选。规定整数的 Unix 时间戳。默认为当前本地时间(time() |
| 返回值: | 返回带有与时间戳相关的信息的关联数组: | |
|---|---|---|
| - | [seconds] - 秒 | |
| - | [minutes] - 分 | |
| - | [hours] - 小时 | |
| - | [mday] - 一个月中的第几天 | |
| - | [wday] - 一周中的某天 | |
| - | [mon] - 月 | |
| - | [year] - 年 | |
| - | [yday] - 一年中的某天 | |
| - | [weekday] - 星期几的名称 | |
| - | [month] - 月份的名称 | |
| - | [0] - 自 Unix 纪元以来经过的秒数 |
$now = time();
var_dump($now); # 输出 1652789456
var_dump(getdate());
var_dump(getdate()[0]); # 输出 1652789456
输出
array:11 [▼
"seconds" => 56
"minutes" => 10
"hours" => 12
"mday" => 17
"wday" => 2
"mon" => 5
"year" => 2022
"yday" => 136
"weekday" => "Tuesday"
"month" => "May"
0 => 1652789456
]
# 2、date() 函数
date() 函数可把时间戳格式化为可读性更好的日期和时间。
语法
string date ( string timestamp ] )
| 参数 | 描述 |
|---|---|
| format | 必需。规定时间戳的格式。 |
| timestamp | 可选。规定时间戳。默认是当前的日期和时间。 |
时间格式化的方式
| 格式化方式 | 说明 |
|---|---|
| Y | 4位数字年,y为2位数字,如99即1999年 |
| m | 数字月份,前面有前导0,如01。n 为无前导0数字月份 |
| F | 月份,完整的文本格式,例如 January 或者 March |
| M | 三个字母缩写表示的月份,例如 Jan 或者 Mar |
| d | 月份中的第几天,前面有前导0,如03。j 为无前导0的天数 |
| w | 星期中的第几天,以数字表示,0表示星期天 |
| z | 年份中的第几天,范围0-366 |
| W | 年份中的第几周,如第32周 |
| H | 24小时格式,有前导0,h为12小时格式 |
| G | 24小时格式,无前导0,g为对应12小时格式 |
| i | 分钟格式,有前导0 |
| s | 秒格式,有前导0 |
| A | 大写上下午,如AM,a为小写 |
date_default_timezone_set('Asia/Shanghai');//设置时区
var_dump(date("Y-m-d",time())); # 输出 显示格式如 string '2022-05-17' (length=10)
var_dump(date("Y.m.d",time())); # 输出 显示格式如 string '2022.05.17' (length=10)
var_dump(date("M d Y",time())); # 输出 显示格式如 'May 17 2022' (length=11)
var_dump(date("Y-m-d H:i",time())); # 输出 显示格式如 '2022-05-17 20:55' (length=16)
var_dump(date("Y-m-d H:i:s "));
# string(20) "2022-05-22 06:21:37" 中文常用时间格式
var_dump(date("y-M-D h:i:S "));
# string(20) "22-May-Sun 06:21:nd" 英文常用时间格式
var_dump(date("F"));
# string(3) "May" 月份,英文全称
var_dump(date("m"));
# string(2) "05" 数字月份 不够两位 前面会自动补零
var_dump(date("n"));
# string(1) "5" 数字月份 不够两位 前面不会补零
var_dump(date("M"));
# string(3) "May" 月份,前三个英文字母
var_dump(date("l"));
# string(6) "Sunday" 星期几,英文全称
var_dump(date("D"));
# string(3) "Sun" 星期几,三个英文字母
var_dump(date("w"));
# string(1) "0" w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
# 3、microtime() 函数
定义 microtime()返回当前 Unix 时间戳和微秒数。
# PHP获取秒、毫秒和微秒的换算关系
1秒(second) = 1000毫秒(millisecond) = 1000,000微秒(microsecond)
| 函数形式 | 返回值 |
|---|---|
| microtime() | 返回字符串 函数返回当前 Unix的微秒数。 |
| microtime(true) | 返回浮点数,表示微秒的时间戳形式 |
date_default_timezone_set('Asia/Shanghai'); #设置时区
var_dump(microtime()); # string(21) "0.70860300 1653173824"
var_dump(microtime(true)); # float(1653173868.4224)
# 函数microtime()通常用法
$mtime = explode(' ',microtime());
$startTime = $mtime[1]+$mtime[0];
var_dump($startTime); # float(1653174485.6806)
# 日常项目开发实例
/**
* 日期时间友好显示
* @param $time
* @return bool|string
*/
<?php
/**
* 日期时间友好显示
* @param $time
* @return bool|string
*/
function friendly_date($time)
{
if (!$time) {
return false;
}
$fdate = '';
$diff = time() - intval($time);
$year = $time - mktime(0, 0, 0, 0, 0, date('Y')); //年
$month = $time - mktime(0, 0, 0, date('m'), 0, date('Y')); //月
$beforeyesterday = $time - mktime(0, 0, 0, date('m'), date('d') - 2, date('Y')); //前天
$yesterday = $time - mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')); //昨天
$today = $time - mktime(0, 0, 0, date('m'), date('d'), date('Y')); //今天
$tomorrow = $time - mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')); //明天
$aftertomorrow = $time - mktime(0, 0, 0, date('m'), date('d') + 2, date('Y')); //后天
if ($diff == 0) {
$fdate = '刚刚';
} else {
switch ($diff) {
case $diff < $aftertomorrow:
$fdate = date('Y年m月d日', $time);
break;
case $diff < $tomorrow:
$fdate = '后天' . date('H:i', $time);
break;
case $diff < 0:
$fdate = '明天' . date('H:i', $time);
break;
case $diff < 60:
$fdate = $diff . '秒前';
break;
case $diff < 3600:
$fdate = floor($diff / 60) . '分钟前';
break;
case $diff < $today:
$fdate = floor($diff / 3600) . '小时前';
break;
case $diff < $yesterday:
$fdate = '昨天' . date('H:i', $time);
break;
case $diff < $beforeyesterday:
$fdate = '前天' . date('H:i', $time);
break;
case $diff < $month:
$fdate = date('m月d日 H:i', $time);
break;
case $diff < $year:
$fdate = date('m月d日', $time);
break;
default:
$fdate = date('Y年m月d日', $time);
break;
}
}
return $fdate;
}
var_dump(friendly_date(time()));
# string(6) "刚刚"
var_dump(friendly_date(strtotime('2022-05-20 15:30:30')));
# string(11) "前天15:30"
var_dump(friendly_date(strtotime('2022-05-23 15:30:30')));
# string(17) "2022年05月23日"