PHP基础之时间和日期
来源:互联网 发布:手机淘宝活动报名 编辑:程序博客网 时间:2024/06/06 10:47
在php中,日期和时间函数依赖于服务器的时间设置,服务器的默认时间是格林尼治时间(零时区时间)。如果不进行时间设置,那么通过php取到的时间就是格林尼治时间,比北京时间少8个小时。当然你可以通过修改php.ini配置文件和date_default_timezone_set来设置你需要的时区。
[Date]date.timezone=Europe/Berlin
通过修改date.timezone的值你可以定制时区。北京时间的时区的取值为PRC。
在日期和时间函数中,有一个特别的概念值得了解一下:那就是时间戳。时间戳是一个字符序列,它的意思是从格林尼治时间1970年01月01日00时00分00秒也就是北京时间1970年01月01日08时00分00秒起到现在的总毫秒数。
下面介绍一下获取时间相关的函数。
1.int gmmktime([int $hour[,int $minute[,int $second[,int $month[,int $day[,int $year[,int $is_dst ]]]]]]])
该函数可以获取GMT日期的unix时间戳。函数的参数可以从左到右空着,空出的参数会被设置为相应的当前GMT(格林尼治时间)值。
echo gmmktime();echo "<br/>";echo gmmktime(0,55,3,8,4,2017);echo "<br/>";-->15057285901501808103
2.int mktime([int $hour=date("H")[,$minute=date("i")[,int $sencond=date("s")[,int $month=date("n")[,int $day=date("j")[,int $year=date("Y")[,int $is_dst=-1]]]]]]])
该函数和gmmktime一样,其参数可以从左到右省略,省略的参数会被设置为本地日期和时间的当前值。
返回值:unix时间戳,长整数值。
echo mktime();echo "<br/>";echo mktime(0,55,3,8,4,2017);echo "<br/>";-->15057289121501800903
3.mixed microtime([bool $get_as_float])
如果传入参数为true,那么返回值是一个浮点数,若不带参数则返回一个"微秒 毫秒"格式的字符串。
echo microtime();echo "<br/>";echo microtime(TRUE);echo "<br/>";-->0.22142800 15057291121505729112.2305
4.int time(void)
返回当前unix时间戳。
echo time();echo "<br/>";-->1505729217
5.array getdate([int $timestamp=time()])
该函数返回一个根据timestamp得出的包含日期信息的关联数组。如果没有给出时间戳那么将被认为是本地时间。
echo "<pre>";var_dump(getdate());-->array (size=11) 'seconds' => int 28 'minutes' => int 10 'hours' => int 12 'mday' => int 18 'wday' => int 1 'mon' => int 9 'year' => int 2017 'yday' => int 260 'weekday' => string 'Monday' (length=6) 'month' => string 'September' (length=9) 0 => int 1505729428
让我们看下数组中的元素都分别代表这什么。
senconds:秒 0-59
minutes:分 0-59
hours:小时 0-23
mday:月份中的第几天 1-31
wday:星期中的第几天 0(周日)-6(周六)
mon:月 1-12
year:年
var_dump(checkdate(8, 33, 2017));echo "<br/>";var_dump(checkdate(8, 30, 2017));echo "<br/>";-->D:\Programs\PHP\PHP_Date\PHP_Date.php:42:boolean falseD:\Programs\PHP\PHP_Date\PHP_Date.php:44:boolean true
yday:一年中的第几天 0-365
weekday:星期几 monday-sunday
month:月份的完整表示
0:自从unix纪元开始到现在的秒数。
个人觉得前面几个函数只有这个是我们用的到的。
计算两个日期的时间差也是我们经常会用到的。在php中,计算时间差要先把日期转化为纪元时间戳在进行运算。
看个简单的实例:
$diff_senconds = $end_time-$start_time;$diff_day = floor($diff_senconds/86400);echo $diff_day;-->366
可以看到,得到两个时间的秒数差后,在自己进行运算就可以得到相差天数,周数等等。
上面的例子中一天的秒数是:24*60*60=86400..
当然了,在实际使用的过程中我们会对用户输入的时间进行检查,避免输入不合法的时间。在php中可以使用checkdate来检查。
var_dump(checkdate(8, 33, 2017));echo "<br/>";var_dump(checkdate(8, 30, 2017));echo "<br/>";-->D:\Programs\PHP\PHP_Date\PHP_Date.php:42:boolean falseD:\Programs\PHP\PHP_Date\PHP_Date.php:44:boolean true
最后提一下可以通过date函数对日期进行格式化。。定制你需要的日期格式。。。参数众多,需要的时候去查阅下manual吧。。
- PHP基础之时间和日期
- php编程之日期和时间
- PHP的日期和时间--php基础最详细教程
- php之时间日期
- php 日期和时间
- php 日期和时间
- php 日期和时间
- PHP日期和时间
- PHP 日期和时间
- PHP日期和时间
- php基础之日期时间函数(4)
- PHP基础----常用库函数----13时间和日期
- java基础 之 时间日期
- php开发之时间和日期的应用
- PHP日期和时间格式
- (3)php日期和时间
- php时间和日期大全
- PHP的日期和时间
- vector用法及详解
- Redis_lesson8 Redis Hash常见操作
- Notification的使用(二)
- MongoDB常用操作
- 编译原理(3):词法分析
- PHP基础之时间和日期
- RN之React组件通信(五)
- 分类算法之朴素贝叶斯算法
- 使用Mybatis进行插入时获取刚刚插入数据的ID(ID是自增字段)
- 关于MySQL数据类型的一些注意问题
- tinyalsa总结
- 使用Django+MySQL开发个人blog
- 7. Reverse Integer
- CVE-2017-9805:Struts2 REST插件远程执行命令漏洞(S2-052) 分析报告