时间处理
设置时区
php
// php.ini
date.timezone = Asia/Shanghai
或者直接在代码
php
ini_set('date.timezone', 'Asia/Shanghai');
php
date_default_timezone_set('Asia/Shanghai')
获取时间
microtime:获取unix时间戳,并带有毫秒
php
microtime();
php
0.66211600 1648106371
time:返回linux时间戳
css
time();
getdate:获取日期时间信息,返回时间信息数组
php
Array (
[seconds] => 28
[minutes] => 18
[hours] => 15
[mday] => 24
[wday] => 4
[mon] => 3
[year] => 2022
[yday] => 82
[weekday] => Thursday
[month] => March
[0] => 1648106308
)
格式化
| format | Des | demo |
|---|---|---|
| d | 月份中的第几天,使用两位的数字表示 不足两位时在前补 0 | 01 到 31 |
| D | 星期几的英文缩写( 3 字符) | Mon 到 Sun |
| l | 星期几的英文单词 | Sunday 到 Saturday |
| N | 根据 ISO-8601 标准格式,使用数字表示星期中的第几天(PHP5.1.0 新加) | 1(表示星期一)到 7(表示星期天) |
| S | 每月天数后面的英文后缀(2字符) | st、nd、rd 或者 th。可以和 j 一起使用 |
| w | 使用数字表示星期中的第几天 | 0(表示星期天)到 6(表示星期六) |
| z | 使用数字表示一年中的第几天 | 0 到 365 |
| W | 根据 ISO-8601 标准格式,使用数字表示年份中的第几周,每周从星期一开始,(PHP 4.1.0 新增) | 例如:42(当年的第 42 周) |
| F | 月份的英文单词,例如 January 或者 June | January 到 December |
| m | 使用两位的数字表示当前月份 | 01 到 12 |
| M | 月份的英文缩写 | Jan 到 Dec |
| n | 使用数字表示当前月份 | 1 到 12 |
| t | 指定月份的天数 | 28 到 31 |
| L | 指定的年份是否为闰年 | 如果是闰年值为 1,否则为 0 |
| o | 根据 ISO-8601 标准格式使用数字表示年份,这和 Y 的作用相同(PHP 5.1.0 新增) | 1999 or 2019 |
| Y | 使用 4 位数字表示完整的年份 | 例如:1999 或 2019 |
| y | 使用 2 位数字表示年份 | 例如:99 或 03 |
| a | 小写的上午和下午值 | am 或 pm |
| A | 大写的上午和下午值 | AM 或 PM |
| B | Swatch Internet 标准时 | 000 到 999 |
| g | 使用 12 小时格式表示小时数 | 1 到 12 |
| G | 使用 24 小时格式表示小时数 | 0 到 23 |
| h | 使用 12 小时格式表示小时数,有前导零 | 01 到 12 |
| H | 使用 24 小时格式表示小时数,有前导零 | 00 到 23 |
| i | 使用两位数字表示分钟数,有前导零 | 00 到 59> |
| s | 使用两位数字表示秒数,有前导零 | 00 到 59> |
| u | 毫秒(PHP 5.2.2 新增)。需要注意的是 date() 函数总是返回 000000,因为它只接受 integer 参数,而 DateTime::format() 才支持毫秒 | 例如:654321 |
| e | 时区标识 | 例如:UTC、GMT、Atlantic/Azores |
| I | 是否为夏令时 | 夏令时为 1,否则为 0 |
| O | 与格林尼治时间相差的小时数 | 例如:+0200 |
| P | 与格林尼治时间(GMT)的差别,小时和分钟之间由冒号分隔 | 例如:+02:00 |
| T | 本机所在的时区 | 例如:EST、MDT(在 windows 下为完整文本格式,例如"Eastern Standard Time",中文版会显示"中国标准时间") |
| Z | 时差偏移量的秒数,UTC 西边的时区偏移量总是负的,UTC 东边的的时区偏移量总是正的 | -43200 到 43200 |
| c | ISO-8601 格式的日期 | 2014-02-12T15:19:21+00:00 |
| r | RFC 822 格式的日期 | 例如:Thu,21 Dec 2000 16:01:07 +0200 |
| U | 从 UNIX 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 | 和 time() 返回相同的时间戳 |
输入年月日时分秒
php
date_default_timezone_set('Asia/Shanghai');
echo date('Y-m-d H:i:s') . '<br>';
字符串时间
strtotime:将英文文本描述的日期时间描述解析为 UNIX 时间戳
php
int strtotime ( string $time [, int $now = time() ] )
time:规定日期/时间字符串now:用来计算返回值的时间戳。如果省略该参数,则使用当前时间
php
echo strtotime("now"), "<br />";
echo strtotime("10 September 2000"), "<br />";
echo strtotime("+1 day"), "<br />";
echo strtotime("+1 week"), "<br />";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "<br />";
echo strtotime("next Thursday"), "<br />";
echo strtotime("last Monday"), "<br />";
时间校验
checkdate:检验日期和时间的有效性,查看是否是合法的闰月之类
php
checkdate(int $month, int $day, int $year): bool {}
php
var_dump(checkdate(2, 30, 2000));