1.日期函数
日期函数用于获得当前系统的日期和时间。
PHP 常用日期函数:
| 函数名 | 说明 |
|---|---|
| date_default_timezone_set() | 设置日期函数的默认时区 |
| date_default_timezone_get() | 获得日期函数的默认时区 |
| time() | 获得当前UNIX时间戳 |
| date() | 将时间戳转换成日期和时间 |
| getdate() | 获取日期信息 |
1、设置时区
在IT互联网行业中,我们通常默认使用的是世界标准时间UTC。中国使用的是北京时间,由于北京地处东八区,领先UTC时间8个小时,因此,我们在PHP中获得日期时间时,必须要正确设置时区。
设置时区语法格式:
date_default_timezone_set(“PRC”);
2、获取时间戳
UNIX 时间戳是从 1970 年 1 月 1 日开始所经过的秒数。
获取时间戳语法格式:
int time()
示例
<?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("PRC");$t1=time();echo$t1;
3、格式化日期
格式化日期用于将时间戳转换成日期和时间。
格式化日期语法格式:
string date(日期格式 , 时间戳)
常用日期格式字符:
| 格式字符 | 说明 | 返回值 |
|---|---|---|
| Y | 4位数表示的年份 | 例如:1999或2020 |
| y | 2位数表示的年份 | 例如:99或20 |
| m | 数字表示的月份,有前导零 | 例如:01或12 |
| M | 三个字母缩写表示的月份 | 例如:Jan或Dec |
| d | 月份中的第几天,有前导零 | 例如:01或31 |
| j | 月份中的第几天,没有前导零 | 例如:1或31 |
| w | 星期中的第几天 | 例如:0(表示星期天)或6(表示星期六) |
| H | 小时,24小时格式,有前导零 | 例如:00中23 |
| h | 小时,12小时格式,有前导零 | 例如:01或12 |
| G | 小时,24小时格式,没有前导零 | 例如:0或23 |
| g | 小时,12小时格式,没有前导零 | 例如:1或12 |
| i | 分钟,有前导零 | 例如:00或59 |
| s | 秒数,有前导零 | 例如:00或59 |
示例
<?phpheader("content-type:text/html;charset=utf-8");date_default_timezone_set("PRC");$d=date("Y-m-d H:i:s",time());echo$d;
2.cookie
Cookie 是一种在客户端存储数据并用这些数据来跟踪和识别用户的机制。Cookie 在 Web 服务器端产生,并以文本文件的形式存储在了客户端电脑的硬盘上。
客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。
客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。
服务器检查该Cookie,以此来辨认用户状态。
Cookie 通常用于以下 3 个方面:
1)记录用户信息,如上次登陆的用户名等。
2)页面之间传递参数。
3)将HTML页面存储在 Cookie 中,提高页面浏览速度。
4)实现记录用户个人信息的功能
注意:
Cookie是不可以跨域名的,隐私安全机制禁止网站非法获取其他网站的Cookie。
比如: 淘宝的 cookie 信息, 京东是不能使用的,也不允许获取.
1、创建Cookie
在 PHP 中,setcookie() 函数可以用来创建 Cookie,但是如果客户端浏览器禁用了 Cookie,则 setcookie() 函数会返回 false。
常见创建 Cookie 的语法格式,有以下两种:
创建 Cookie 语法格式:
bool setcookie(名称 , 值)
注意:Cookie 会在会话结束(浏览器整体关闭)时失效。
创建 Cookie 语法格式:
bool setcookie(名称 , 值 , 有效期)
注意:Cookie 会在有效期过后失效。
2、读取 Cookie
PHP 提供了全局变量 $_COOKIE 来读取 Cookie 的值。
读取Cookie语法格式:
$变量 = $_COOKIE[“名称”]
示例*
<?phpheader("content-type:text/html;charset=utf-8");setcookie("userName","张小明",time()+3600);if(isset($_COOKIE["userName"])){$name=$_COOKIE["userName"];echo$name;}else{echo"Cookie还未创建";}
3.设置Cookie信息 setcookie()
setcookie(string $name, string $value = "", array $options = []): bool
setcookie() 定义了 Cookie,会和剩下的 HTTP 头一起发送给客户端。 和其他 HTTP 头一样,必须在脚本产生任意输出之前发送 Cookie(由于协议的限制)。 请在产生任何输出之前(包括 和 或者空格)调用本函数。
一旦设置 Cookie 后,下次打开页面时可以使用 $_COOKIE 读取。 Cookie 值同样也存在于 $_REQUEST。
常见创建 Cookie 的语法格式,有以下两种:
创建 Cookie 语法格式一:
bool setcookie(名称 , 值)
注意:Cookie 会在会话结束(浏览器整体关闭)时失效。
3、删除 Cookie
没有设置有效期的 Cookie,在浏览器整体关闭时,就会自动删除。设置了有效期的 Cookie,在过了有效期之后,也会自动删除。
如果我们想提前删除 Cookie 中的值,可以通过 setcookie() 函数,重新将指定的 Cookie 值设置为空值。
示例
<?php
header("content-type:text/html;charset=utf-8");
setcookie("userName","张小明",time()+3600);
setcookie("userName","");
if(isset($_COOKIE["userName"])){
$name=$_COOKIE["userName"];
echo$name;
}
else{
echo"Cookie还未创建";
}
3.补充
time()
time(): int
返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
echo time();
- getdate()
getdate(int $timestamp = time()): array
返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。
如果没有给出时间戳则认为是当前本地时间。
可选的 timestamp 参数是一个 int 的 Unix 时间戳,如未指定或是 **null**,参数值默认为当前本地时间。也就是说,其值默认为 time() 的返回值。
返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。 返回的关联数组中的键名单元有以下几个:
| 键名 | 说明 | 返回值例子 |
|---|---|---|
"seconds" |
秒的数字表示 | 0到 59 |
"minutes" |
分钟的数字表示 | 0到 59 |
"hours" |
小时的数字表示 | 0到 23 |
"mday" |
月份中第几天的数字表示 | 1到 31 |
"wday" |
星期中第几天的数字表示 | 0(周日) 到 6(周六) |
"mon" |
月份的数字表示 | 1到 12 |
"year" |
4 位数字表示的完整年份 | 比如: 1999或 2003 |
"yday" |
一年中第几天的数字表示 | 0到 365 |
"weekday" |
星期几的完整文本表示 | Sunday到 Saturday |
"month" |
月份的完整文本表示,比如 January 或 March | January到 December |
0 |
自从 Unix 纪元开始至今的秒数,和 time() 的返回值以及用于 date() 的值类似。 |
系统相关,典型值为从 -2147483648到 2147483647。 |
$cd = getdate();
foreach ($cd as $key => $value) {
echo $key . "-->" . $value . "<br>";
}
- date()
date(string $format, int $timestamp = ?): string
格式化一个本地时间/日期
返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。
常用日期格式字符:
| 格式字符 | 说明 | 返回值 |
|---|---|---|
| Y | 4位数表示的年份 | 例如:1999或2020 |
| y | 2位数表示的年份 | 例如:99或20 |
| m | 数字表示的月份,有前导零 | 例如:01或12 |
| M | 三个字母缩写表示的月份 | 例如:Jan或Dec |
| d | 月份中的第几天,有前导零 | 例如:01或31 |
| j | 月份中的第几天,没有前导零 | 例如:1或31 |
| w | 星期中的第几天 | 例如:0(表示星期天)或6(表示星期六) |
| H | 小时,24小时格式,有前导零 | 例如:00中23 |
| h | 小时,12小时格式,有前导零 | 例如:01或12 |
| G | 小时,24小时格式,没有前导零 | 例如:0或23 |
| g | 小时,12小时格式,没有前导零 | 例如:1或12 |
| i | 分钟,有前导零 | 例如:00或59 |
| s | 秒数,有前导零 | 例如:00或59 |
// 年-月-日
echo date("y-m-d");
echo "<br>";
echo date("Y-m-d");
echo "<br>";
// 年/月/日
echo date("Y/m/d");
echo "<br>";
// xx年xx月xx日
echo date("Y年m月d日");
echo "<br>";
// 时:分:秒
echo date("h:i:s");
echo "<br>";
echo date("H:i:s");
echo "<br>";
// 年月日 时分秒
echo date("Y/m/d H:i:s");
echo "<br>";
// L 是否为闰年 ,如果是闰年为 1,否则为 0
echo date("Y-m-d -> L");
- date_default_timezone_get()
date_default_timezone_get(): string
取得一个脚本中所有日期时间函数所使用的默认时区
- date_default_timezone_set()
date_default_timezone_set(string $timezone_identifier): bool
设定用于一个脚本中所有日期时间函数的默认时区
echo date_default_timezone_get();
// 格林尼治时间
date_default_timezone_set("UTC");
echo "<br>";
echo date_default_timezone_get();
// 亚洲/上海时区
date_default_timezone_set("Asia/Shanghai");
echo "<br>";
echo date_default_timezone_get();
echo "<br>";
// PRC the People's Republic of China 中华人民共和国 (可认为是北京时间)
date_default_timezone_set("PRC");
echo "<br>";
echo date_default_timezone_get();
- strtotime()
strtotime(string $datetime, int $now = time()): int
将任何字符串的日期时间描述解析为 Unix 时间戳
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
// 今天的时间
echo date("Y-m-d H:i:s");
echo "<br>";
$t = "+1 day";
$time = strtotime($t);
// 明天的这个时间
echo date("Y-m-d H:i:s", $time);
