PHP的日期和时间 原创
介绍UNIX时间戳
简介:以最小从0开始,最大到2的32次方减一的整数表示格林威治标准时间如112304325
这个UNIX时间戳整数是从1970年1月1日0时0分0秒开始(计算机元年)到现在的秒数。
作用:方便我们计算使用(参与运算)
时间范围 1970-01-01 0:0:0 到2038-01-19 11:14:07 时间戳范围1-2147483647 int
在PHP中获取日期和时间
1. int time ( void ) time() 当前时间戳
2.array getdate ([ int $timestamp = time() ] ) 默认返回当前时间日期格式化的数组。 如果传参,就传时间戳类型的参数。
[secondes] =>41 秒
[minutes] => 33 分钟
[hours] => 7 小时
[mday] => 12 一个月中的第几天
[wday] => 5 一个星期的第几天
[mon] => 11 数字型月份
[year] => 2010 年份
[yday] => 315 一年中的第几天
[weekday] => Friday 英文星期几
[month] => November 英文月份
[0] => 1289547221 时间戳
3.strtotime() 功能与mktime()相似返回时间戳
int strtotime ( string $time [, int $now = time() ] ) 定义:将任何英文文本的日期时间描述解析为 Unix 时间戳
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
时间日期格式化输出
(把时间戳转换成日期时间)
string date ( string $format [, int $timestamp ] )
date('Y-m-d H:i:s'); 默认转化当前时间戳
date('Y-m-d H:i:s',1285947221); 转换给定第二参数的时间戳
说明:format参数比较多,可以根据需要使用不同参数。
把日期和时间转成时间戳格式
int mktime(时,分,秒,月,日,年);
说明:有自动校正功能
mktime(0,0,0,12,36,2007); 2008-01-05 0:0:0 的时间戳
mktime(0,0,0,12,30,99); 1999-12-30 0:0:0 的时间戳
通过用户输入的生日信息,转换为时间戳来算用户生日:
<?php
date_default_timezone_set('PRC');
$bir = '1987-02-24';
list($year,$month,$day) = explode('-',$bir);
$age = floor((time() - mktime(0,0,0,2,24,1987))/(60*60*24*365));
echo $age;
修改PHP的默认时区
第一种方式:修改php.ini文件来修改默认时区。
date.timezone = Etc/GMT+8
说明:尽量不要改配置文件,通过函数设置,然后include到每个文件中是最好的选择。
第二种方式:通过函数来修改时区时间,只对使用此函数的页面生效。
date_default_timezone_set('PRC'); 首选此方式
date_default_timezone_set('Etc/GMT-8');
date_default_timezone_set('Asia/Shanghai');
建议:服务器每半小时同步一次。
使用微秒计算PHP脚本执行的时间
微秒时间函数:mixed microtime ([ bool $get_as_float ] )
不填写参数时,会返回微秒数 和 时间戳
填写true时,只会返回微秒数。
实例:
<?php
date_default_timezone_set('PRC');
class Timer {
private $startTime;
private $stopTime;
function _construct(){
$this->startTime = 0;
$this->stopTime = 0;
}
function start(){
$this->startTime = microtime(true);
echo $this->startTime;
}
function stop(){
$this->stopTime = microtime(true);
echo $this->stopTime;
}
function spent(){
return round(($this->stopTime)-($this->startTime),4);
}
}
$timer = new Timer;
$timer->start();
echo '<br>';
for($i = 0 ;$i < 10000;$i++){
}
$timer->stop();
echo '<br>';
echo $timer->spent();
echo '<br>';
日历示例