<?php
/*
1.日期和时间函数
(1)获得本地时间戳
mktime() 将一个时间转换成UNIX时间戳
int mktime(int hour,int minute,int second,int mount,int day,int year,int[is_dst])
如果要不带参数调用mktime,等同于调用time(),,应用其代替*/
echo "time()返回的时间戳 ".time().'<br/>';
echo "当前日期为 ".date("YY-m-d",time()).'<br/>';
echo "当前时间为 ".date("H:i:s",time()).'<br/>';
/*(2)获取当前时间戳
time()获得当前的UNIX时间戳 返回值为UNIX纪元到当前时间的描述*/
$nextWeek=time()+(7*24*60*60);
echo 'Now:'.date('Y-m-d').'<br/>';
echo 'Next Week:'.date('Y-m-d',$nextWeek).'<br/>';
/*
(3)获取当前日期和时间
date()获取当前日期和时间
date(string format[,int timestamp])
预定义常量
DATE_ATOM 原子钟格式 DATE_COOKIE HTTP Cookies格式
DATE_ISO8601 ISO8601格式 DATE_RFC822 RFC822格式
DATE_RFC850 RFC850格式 DATE_RSS RSS格式
DATE_W3C W3C格式
*/
echo "DATE_ATOM=".date(DATE_ATOM).'<br/>';
echo "DATE_COOKIE=".date(DATE_COOKIE).'<br/>';
echo "DATE_ISO8601=".date(DATE_ISO8601).'<br/>';
echo "DATE_RFC822=".date(DATE_RFC822).'<br/>';
echo "DATE_RFC850=".date(DATE_RFC850).'<br/>';
echo "DATE_RSS=".date(DATE_RSS).'<br/>';
echo "DATE_W3C=".date(DATE_W3C).'<br/>';
/*
(4)获取日期信息 array getdate(int timestamp)
返回数组形式的日期和时间信息 如果没有参数 已当前时间为准
关联数组元素
second 秒 minutes 分钟 hours 小时
mday 月中的第几天 wday 星期中的第几天
mon 月份 year 年份 yday 一年中的第几天
weekday 星期几的完整文本表示 month 月份的完整表示
0 从UNIX纪元开始到现在时间的秒数
*/
$arr=getdate();
echo $arr['year'].'-'.$arr['mon'].'-'.$arr['mday'].'<br/>';
echo $arr['hours'].'-'.$arr['minutes'].'-'.$arr['weekday'].'<br/>';
echo "Today is the ".$arr['yday']." th of year<br/>";
/*
(5)检验日期的有效性 bool checkdate(int month,int day,int year)*/
$year=2008;
$month=2;
$day1=29;
$day2=30;
var_dump(checkdate($month, $day1, $year));
echo '<br/>';
var_dump(checkdate($month, $day2, $year));
echo '<br/>';
/*输出格式化的日期与时间
d - 一个月中的第几天(从 01 到 31)
D - 星期几的文本表示(用三个字母表示)
j - 一个月中的第几天,不带前导零(1 到 31)
l('L' 的小写形式)- 星期几的完整的文本表示
N - 星期几的 ISO-8601 数字格式表示(1表示Monday[星期一],7表示Sunday[星期日])
S - 一个月中的第几天的英语序数后缀(2 个字符:st、nd、rd 或 th。与 j 搭配使用)
w - 星期几的数字表示(0 表示 Sunday[星期日],6 表示 Saturday[星期六])
z - 一年中的第几天(从 0 到 365)
W - 用 ISO-8601 数字格式表示一年中的星期数字(每周从 Monday[星期一]开始)
F - 月份的完整的文本表示(January[一月份] 到 December[十二月份])
m - 月份的数字表示(从 01 到 12)
M - 月份的短文本表示(用三个字母表示)
n - 月份的数字表示,不带前导零(1 到 12)
t - 给定月份中包含的天数
L - 是否是闰年(如果是闰年则为 1,否则为 0)
o - ISO-8601 标准下的年份数字
Y - 年份的四位数表示
y - 年份的两位数表示
a - 小写形式表示:am 或 pm
A - 大写形式表示:AM 或 PM
B - Swatch Internet Time(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 中新增的)
e - 时区标识符(例如:UTC、GMT、Atlantic/Azores)
I(i 的大写形式)- 日期是否是在夏令时(如果是夏令时则为 1,否则为 0)
O - 格林威治时间(GMT)的差值,单位是小时(实例:+0100)
P - 格林威治时间(GMT)的差值,单位是 hours:minutes(PHP 5.1.3 中新增的)
T - 时区的简写(实例:EST、MDT)
Z - 以秒为单位的时区偏移量。UTC 以西时区的偏移量为负数(-43200 到 50400)
c - ISO-8601 标准的日期(例如 2013-05-05T16:34:42+00:00)
r - RFC 2822 格式的日期(例如 Fri, 12 Apr 2013 12:01:05 +0200)
U - 自 Unix 纪元(January 1 1970 00:00:00 GMT)以来经过的秒数*/
echo "输出单个变量".date("Y").'-'.date("m").'-'.date("d").'<br/>';
echo "输出组合变量".date("Y-m-d").'<br/>';
echo "输出更详细的".date("Y-m-d H:i:s").'<br/>';
echo "还可以更详细吗".date("Y-m-d H:i:s T").'<br/>';
/*
(7)显示本地化的日期和时间
setlocalez()改变PHP默认的本地化环境
string setlocale(string category[,string locale])
category的选项
LC_ALL 包含了下面所有设置本地化规则
LC_COLLATE 字符串比较
LC_ATYPE 字符串分类 转换
LC_MONETARY 本地环境的货币形式
LC_NUMERIC 本地环境的数值形式
LC_TIME 本地环境的时间形式
如果locale为空 就会使用系统环境变量的locale或lang的值 否则就会应用locale所指定的本地环境 如en_US为美国 chs指简体中文 cht为繁体中文*/
/*
(8)strftime()
根据本地环境设置来格式化输出日期与时间
string strftime(string format,int timestamp)
%a - 星期几名称的简写
%A - 星期几名称的全称
%b - 月份名称的简写
%B - 月份名称的全称
%c - 首选的日期和时间表示法
%C - 表示世纪的数字(年份除以 100,范围从 00 到 99)
%d - 一个月中的第几天(01 到 31)
%D - 时间格式,与 %m/%d/%y 表示法相同
%e - 一个月中的第几天(1 到 31)
%g - 与 %G 表示法类似,但不带世纪
%G - 与 ISO 星期数对应的 4 位数年份(见 %V)
%h - 与 %b 表示法相同
%H - 小时,使用 24 小时制(00 到 23)
%I - 小时,使用 12 小时制(01 到 12)
%j - 一年中的第几天(001 到 366)
%m - 月份(01 到 12)
%M - 分
%n - 换行符
%p - 与给定的时间值相对应的 am 或 pm
%r - a.m. 和 p.m. 的时间标记法
%R - 24 小时制的时间标记法
%S - 秒
%t - tab 制表符
%T - 当前时间,与 %H:%M:%S 表示法相同
%u - 星期几的数字表示(1 到 7),Monday[星期一] = 1。警告:在 Sun Solaris 系统中,Sunday[星期日] = 1
%U - 当年包含的周数,从第一个星期日开始,作为第一周的第一天
%V - 当年包含的 ISO 8601 格式下的周数(01 到 53),week 1 表示当年的第一周,至少要有四天,且以星期一作为周的第一天
%W - 当年包含的周数,从第一个星期一开始,作为第一周的第一天
%w - 以十进制数形式表示一周中的某天,Sunday[星期日] = 0
%x - 首选的日期表示法,不带时间
%X - 首选的时间表示法,不带日期
%y - 不包含表示世纪的数字的年份表示(范围从 00 到 99)
%Y - 包含表示世纪的数字的年份表示
%Z 或 %z - 时区名称或简写
%% - 输出一个 % 字符
*/
setlocale(LC_ALL,"en_US");
echo "美国格式".strftime("Today is %A").'<br/>';
setlocale(LC_ALL, "chs");
echo "简体中文".strftime("今天是星期 %A").'<br/>';
/*
(8)将日期和时间解析为UNIX时间戳
int strtotime(string time[,int now])
如果参数time是绝对时间 now参数不起作用 如果time是相对时间 那么其对于时间是由now提供的 如果没有参数now 对应时间就是当前时间 解析失败返回false
*/
echo strtotime("now").'<br/>';
echo "输出时间".date("Y-m-d H:i:s",strtotime("now")).'<br/>';
echo strtotime("21 May 2009").'<br/>';
echo "输出时间".date("Y-m-d H:i:s",strtotime("21 May 2009")).'<br/>';
?>
PHP日期与时间
最新推荐文章于 2024-01-07 20:37:51 发布