PHP学习十二--日期和时间
日期时间函数库是PHP内置函数库,可以通过日期时间函数库获得服务器的日期时间相关内容。
1.在地球分为24个时区,每个时区都有自己的本地时间。在国际无线电通信领域,使用一个统一的时间,成为通用协调时间---UTC,与格林威治标准时间相同。PHP中默认设置的是格林威治标准时间,即采用零时区,因此要获取本地当前时间必须更改PHP语言中的时区设置。
更改PHP语言中的时区设置有两种方法:
(1).修改php.ini文件中的设置,找到【date】下的date.timezone = 选项,修改为date.timezone = Asia/HongKong。然后重新启动阿帕奇服务器。
(2).在应用程序中,在使用时间日期函数之前添加如下函数:
date_default_timezone_set(timezone);
参数timezone为PHP可识别的时区名称,如果PHP无法识别,则系统采用UTC时区。
(3).通过ini_set()动态设置时区。
2.(1).获取本地化时间戳
PHP中使用mktime()函数将一个时间转换为UNIX的时间戳。
语言格式:int mktime(int hour,int minute,int second,int mouth,int day,int year,int is_dst);
echo "mktime 函数返回的时间戳:".mktime(); //函数返回的时间戳:120128....
echo "当前的日期为:".date("Y-m-d",mktime())"<p>" //当前的日期为:2008-01-23
(2).获取当前时间戳
语法格式:int time(void) 返回值为从UNIT纪元(格林威治时间1970年1月1日)到当前时间的秒数。
(3).获取当前日期和时间
语法格式:date(string format[int timestamp]);
(4).获取日期信息
array getdate(int timestamp);
getdate()函数返回数组形式的日期和时间信息,如果没有参数timestamp,则以当前时间为准。
关联数组元素:seconds,minutes,hours,mday(月份中的第几天,返回1~31),wday(星期中的第几天,返回值为0~6),mon,year,yday(一年中的第几天),weekday,mouth
$arr = getdate();
echo $arr[year]."-".$arr[mon]."-".$arr[mday].""; //2017-03-30
(5).检测日期的有效性
PHP中内置了日期检查函数,就是checkdate()函数
语法格式:bool checkdate(int mouth,int day,int year);
(6).输出格式化的日期和时间
date() 函数用于格式化时间,返回一个字符串。
语法:
string date( string format [, int timestamp] )
参数 format 表示时间格式化的方式,可能的方式如下:
格式化方式 | 说明 |
---|---|
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为小写 |
可选参数 timestamp 表示时间戳,默认为 time() ,即当前时间戳。
我们可以通过 date() 函数提供的丰富格式化来显示需要的时间日期,如下面的例子:
date("Y-m-d",time()); //显示格式如 2008-12-01 date("Y.m.d",time()); //显示格式如 2008.12.01 date("M d Y",time()); //显示格式如 Dec 01 2008 date("Y-m-d H:i",time()); //显示格式如 2008-12-01 12:01
(7).显示本地化的日期和时间
使用setlocate()函数和strtime()函数来设置本地化环境和格式化输出日期和时间。
1.setlocate()函数,可以改变PHP默认的本地化环境
string setlocate(string category);
LC_ALL 包含了下面所有的设置本地化规则
LC_COLLATE 字符串比较
LC_CTYPE 字符串分类和转换,如大小写转换
LC_MONETARY 本地化环境的货币形式
LC_NUMERIC 本地化环境的数值形式
LC_TIME 本地化环境的时间形式
2.strtime()函数,根据本地化环境设置来格式化输出时间和日期
string strtime(string formart ,int timestamp);
3.将日期和时间解析为UNIX时间戳
int strtotime(string time);
echo strtotime("now");当前时间的时间戳//距离1970.01.01的所有秒数
date("Y-m-d",strtotime("now")); //2017-03-31