您的位置:首页 > 编程语言 > PHP开发

【小白笔记】PHP学习之路 (27) --日期、时间戳的获取

2014-04-16 08:44 615 查看
PHP以UTC/GMT(格林威治标准时间、零时区)为默认时间。

在php.ini中可以修改默认时间:date.timezone = PRC。

也可以修改为Asia/chongqing、Asia/shanghai、Asia/urumqi(都是东八区的区时)

函数获取、修改默认时区:

date_default_timezone_get()

date_default_timezone_set()

在某一脚本使用函数设置默认时区后只影响当前脚本。

 unix时间戳:

使用32位的二进制表示,范围-2147483648~+2147483648,从1901年X月X日到2038年X月X日。

由于一部分LINUX系统中无法表示负的时间戳,因此以1970年1月1日0时0分0秒为UNIX世纪元。

unix时间戳即表示从1970年1月1日(即UNIX世纪元年)到指定时间间隔的秒数。不受操作系统影响。

time()      获得当前时间的unix时间戳。

strtotime()      获取指定时间的unix时间戳。可以传参now获取当前、传递 +/-x days/weeks/months/years 获取x 天/周/月/年 后/前的时间。

                         可传第二个参数从指定时间算起。可以通过此函数计算两个时间点之间的间隔。

mktime()    不传参时获得当前时间unix时间戳。可以通过传参产生unix时间戳。格式:时,分,秒,月,日,年

date()      获取时间,只传参"U"可以获得当前unix时间戳。传参"D/l"获得当前是星期几(简写/全称)。

                若有两个参数,第一个为格式化字符串(可传参a/A),第二个为指定的时间。

                 更多参数:

                  m      获取月份,前面含有0,如04。

                  n       获取月份,前面不含0。

                  M      获取月份,英文缩写。

                  y        获取年份。简写,如14。

                  Y       获取年份,不简写,如2014.

                  z        获得当前时间是一年中的第几天。

gmmktime()      用法与mktime()相同,只是获取的是零时区的时间戳。

microtime()      获取准确时间,比time()多了微秒。返回字符串("微秒 秒")。如果传参true,则直接显示合并后的精确到微秒的时间。

gmdate()       用法与date()相同,只不过是获得零时区的时间。

getdate()       获取含各种时间信息的时间数组。

strftime()      从时间中获取字符串。

gettimeofday()        获取含unix时间戳和微秒数的数组。添加一个参数true则返回合并后的含微秒的unix时间戳。

checkdate()      传入三个参数月日年,检查时间是否合法。例如2月29日等。

例:

<?php
echo "<pre>";
echo date("Y-m-d-h-i-s")."<br/>";
date_default_timezone_set("Asia/Shanghai");
echo date("Y-m-d-h-i-s")."<br/>";
echo time()."<br/>";
echo strtotime("2014-4-15 11:26:30")."<br/>"; //"2014/4/15 11:26:30"也可以
echo (strtotime("2014-4-15")-strtotime("2013-4-15"))/3600/24/30/12;
echo "<br/>================================<br/>";
$t = mktime(3,32,45,7,8,2009);
echo $t."<br/>";
echo date("Y-m-d h:i:s", $t)."<br/>";
$t1 = gmmktime(3,32,45,7,8,2009);
echo date("Y-m-d h:i:s", $t1)."<br/>";
echo "<br/>================================<br/>";
echo strtotime("now")."<br/>"; //至少一个参数,与time()效果是一样的
echo time()."<br/>";
$t2 = strtotime("8 june 2008");
echo $t2."<br/>";
echo date("Y-m-d", $t2)."<br/>";
echo "<br/>================================<br/>";
$t3 = strtotime("+3 days");
echo $t3."<br/>";
echo date("Y-m-d h:i:s",$t3)."<br/>";
echo date("Y-m-d h:i:s",strtotime("-1 years",strtotime("2014/4/16")))."<br/>"; //years可改为weeks、months、days等
echo "<br/>================================<br/>";
echo "<br/>================================<br/>";
echo microtime(TRUE)."<br/>";
$timeArr = explode(" ",microtime());
print_r($timeArr);
echo $timeArr[0]+$timeArr[1];
echo "<br/>";
echo array_sum($timeArr)."<br/>";
echo "<br/>================================<br/>";
echo date("Y年m月d日 h时i分s秒 a",strtotime("1992/2/25 8:32:16"))."<br/>";
$timeArr1 = getdate();
print_r($timeArr1)."<br/>";
echo strftime("%A %B")."<br/>"; //a、b为英文小写
setlocale(LC_ALL,'chs'); //本地化表示
echo strftime("%A %B %c")."<br/>"; //参数c含义为用本地标准时间格式表示
echo strftime("%Y年%b%d日%A")."<br/>";
print_r(gettimeofday());
var_dump(checkdate(3,8,2009));
?>

结果:
2014-04-16-12-49-19
2014-04-16-08-49-19
1397609359
1397532390
1.0138888888889
================================
1246995165
2009-07-08 03:32:45
2009-07-08 11:32:45

================================
1397609359
1397609359
1212854400
2008-06-08

================================
1397868559
2014-04-19 08:49:19
2013-04-16 12:00:00

================================

================================
1397609359.8589
Array
(
[0] => 0.85893900
[1] => 1397609359
)
1397609359.8589
1397609359.8589

================================
1992年02月25日 08时32分16秒 am
Array
(
[seconds] => 19
[minutes] => 49
[hours] => 8
[mday] => 16
[wday] => 3
[mon] => 4
[year] => 2014
[yday] => 105
[weekday] => Wednesday
[month] => April
[0] => 1397609359
)
Wednesday April
星期三 四月 2014/4/16 8:49:19
2014年四月16日星期三
Array
(
[sec] => 1397609359
[usec] => 861425
[minuteswest] => -480
[dsttime] => 0
)

boolean true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 日期时间