首页 > php学习 > php常用函数 > PHP中时间和日期处理函数
2016
12-16

PHP中时间和日期处理函数

一、设置时区

修改php.ini文件中的设置,date.timezone选项修改为date.timezone=Asia/Shanghai,然后重新启动apache服务器。

date_default_timezone_set('Asia/Shanghai');//设置时区

date_default_timezone_get():返回当前脚本中所使用的默认时区,如果设置了date_default_timezone_set则返回该值,没有设置返回php的配置文件中的默认时区,如果以上都不成功,返回 UTC 的默认时区。

二、获取当前Unix时间戳

time()

三、获取指定时间的Unix时间戳

mktime($hour,$minute,$second,$month,$day,$year)

根据给出的参数返回 Unix 时间戳。参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。

四、验证指定日期的合法性:checkdate ( int $month , int $day , int $year ),返回bool类型。

五、getdate ([ int $timestamp = time() ] ),返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。如果没有给出时间戳则默认是当前本地时间。返回数组中的键名、说明和值为:

"seconds" :秒的数字表示:0 到 59

"minutes":分钟的数字表示:0 到 59

"hours":小时的数字表示:0 到 23

"mday" :月份中第几天的数字表示:1 到 31

"wday":星期中第几天的数字表示:0 (周日) 到 6 (周六)

"mon":月份的数字表示:1 到 12

"year":4 位数字表示的完整年份:0000 到9999

"yday":一年中第几天的数字表示:0 到 365

"weekday":星期几的完整文本表示:Sunday 到 Saturday

"month":月份的完整文本表示:January 到 December

0:自从 Unix 纪元开始至今的秒数,即Unix时间戳

六、从Unix时间戳取得时间日期信息

date (string $format[,int $timestamp])格式化一个时间戳

返回将整数timestamp按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。

date('Y-m-d G:i:s')

时间格式:

年:L 是否为闰年 如果是闰年为 1,否则为 0

Y 4位数字完整表示的年份

y 2位数字表示的年份

月:F 月份,完整的文本格式,例如 January

m 数字表示的月份,有前导零 01 到 12

M 三个字母缩写表示的月份 Jan 到 Dec

n 数字表示的月份,没有前导零 1 到 12

t 给定月份所应有的天数 28 到 31

日:d 月份中的第几天,有前导零的2位数字01 到 31

j 月份中的第几天,没有前导零 1 到 31

S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用

z 年份中的第几天 0 到 365

星期

W 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加) 如:42(当年的第 42 周)

D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun

l("L"的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday

N 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)

w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)

时间:

a 小写的上午和下午值 am 或 pm

A 大写的上午和下午值 AM 或 PM

H 小时,24 小时格式,有前导零 00 到 23

G 小时,24 小时格式,没有前导零 0 到 23

h 小时,12 小时格式,有前导零 01 到 12

g 小时,12 小时格式,没有前导零 1 到 12

i 有前导零的分钟数 00 到 59

s 秒数,有前导零 00 到 59>

u 毫秒 (PHP 5.2.2 新加)。date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format()才支持毫秒。

七、idate ( string $format [, int $timestamp ] )

和 date() 不同,idate() 只接受一个字符作为 format 参数。

八、gettimeofday([bool $return_float=false])

参数不填写或设置为false返回与当前时间有关的元素所组成的一个关联数组,可选参数如果设置为true,则返回一个浮点数。

数组中的键代表的意义:

array(4) {

["sec"]=>1475056846,//自 Unix 纪元起的秒数

["usec"]=>395061,//微秒数

["minuteswest"]=>-480,//格林威治向西的分钟数

["dsttime"]=>0 //夏令时修正的类型

}

如果设置参数为true,则返回由秒数和微秒组成的浮点数,如1475056846.3951。

九、strtotime(string $time)

将人可读的日期表示字符串转换为Unix时间戳,字符串的格式有很多,常用的有:

strtotime('2007-10-31 14:31:33');

strtotime("now")

strtotime("10 September 2000")

strtotime("+1 day")

strtotime("+1 week")

strtotime("+1 week 2 days 4 hours 2 seconds")

strtotime("next Thursday")

strtotime("last Monday")

等等。

十、localtime ([int $timestamp=time()[,bool $is_associative=false]])   返回一个数组:

可选的timestamp参数是一个Unix 时间戳,如未指定,参数值默认为当前本地时间。也就是说,其值默认为time()的返回值。

可选的is_associative参数如果设为FALSE或未提供则返回的是数字索引数组。如果设为 TRUE则返回关联数组。索引数组和关联数组不同的仅仅是关联数组的键值改变了,其他是一样的。关联数组中不同的键名为:

"tm_sec" - 秒数, 0 到 59

"tm_min" - 分钟数, 0 到 59

"tm_hour" - 小时, 0 到 23

"tm_mday" - 月份中的第几日, 1 到 31

"tm_mon" - 年份中的第几个月, 0 (Jan) 到 11 (Dec)

"tm_year" - 年份,从 1900 开始

"tm_wday" - 星期中的第几天, 0 (Sun) 到 6 (Sat)

"tm_yday" - 一年中的第几天, 0 到 365

"tm_isdst" - 夏令时当前是否生效? 如果是生效的是正数, 0 代表未生效,负数代表未知。

十一、microtime()

返回当前微秒数和UNIX时间戳组成的字符串,中间用空格隔开,一般用来在头尾运行计算脚本运行的耗时:

function fntime() {

list($msec, $sec) = explode(' ', microtime());

return $msec+$sec;

}

$start_time = fntime();

for($i=0;$i<1000000;$i++) {}

echo round(fntime() - $start_time,4);

十二、根据时间戳生成唯一ID

uniqid ([string $prefix = "" [, bool $more_entropy = false ]] ) : 根据CPU时间戳来生成ID,所以在相近的时间段内,id前几位是一样的,这也方便id的排序

$prefix :如果你想更好的避免重复,可以在前面加上前缀$prefix。$prefix默认为空,返回的字符串长度为13

$more_entropy 如果设置为TRUE,会在返回的字符串结尾增加额外的煽。 使得唯一ID更具唯一性,此时返回的字符串长度为23。

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。