添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
  • echo date_default_timezone_get(); //获取主机默认时区

  • date_default_timezone_set( 'Asia/Shanghai' ); //'Asia/Shanghai' 亚洲/上海   或者:

  • date_default_timezone_set( 'PRC' ); //其中PRC为“中华人民共和国”

  • date_default_timezone_set( 'Asia/Shanghai' );

  • $time = date ( "Y-m-d H:i:s" );

  • $time = StrToTime ( $time );

  • 2.获取本地日期时间:

  • echo date ( 'Y:m:d h:i:s' ); //2013:01:19 01:10:43

  • 格式:string date ( string format [, int timestamp] )

    还有一些格式:

    format字符 返回值例子 ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003 4 位数字完整表示的年份 例如:1999 或 2003 2 位数字表示的年份 例如:99 或 03 小写的上午和下午值 am 或 pm 大写的上午和下午值 AM 或 PM Swatch Internet 标准时 000 到 999 小时,12 小时格式,没有前导零 1 到 12 小时,24 小时格式,没有前导零 0 到 23 小时,12 小时格式,有前导零 01 到 12 小时,24 小时格式,有前导零 00 到 23 有前导零的分钟数 00 到 59> 秒数,有前导零 00 到 59> 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores 是否为夏令时 如果是夏令时为 1,否则为 0 与格林威治时间相差的小时数 例如:+0200 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200 完整的日期/时间 ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00 RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time()

    5.microtime -- 返回当前 Unix 时间戳和微秒数,返回格式:msec sec

    6.strftime -- 根据区域设置格式化本地时间/日期,这个参数比较多,详情见手册。经常和另一个函数同时出现:strptime -- 解析由 strftime() 生成的日期/时间

  • $format = '%d/%m/%Y %H:%M:%S' ;

  • $strf = strftime ( $format );

  • echo "$strf\n" ; //03/10/2004 15:54:19

  • 6.mktime -- 取得一个日期的 Unix 时间戳

    参数int hour , int minute , int second , int month , int day , int year

    当你要表示某个月的最后一天,可以用下个月的第0天表示(也可以用负数):

  • $lastday = mktime (0, 0, 0, 3, 0, 2000);

  • echo strftime ( "Last day in Feb 2000 is: %d" , $lastday );

  • 7.time -- 返回当前的 Unix 时间戳

    这个时间戳,一般我们作为参数,用作前面的函数,比如date()

  • $nextWeek = time() + (7 * 24 * 60 * 60); // 7天

  • echo 'Next Week: ' . date ( 'Y-m-d' , $nextWeek ) . "\n" ;

  • 二、时间日期转换

    1、checkdate(month,day,year)函数验证指定的值合法性,该函数返回 true,否则返回 false。

  • if ( checkdate (4,31,2013)==true){ //false

  • echo 1;

  • else {

  • echo 0;

  • if ( checkdate (4,30,2013)==true){ //true

  • echo 1;

  • else {

  • echo 0;

  • 2、日期转换成时间戳

    $time=date("Y-m-d H:i:s");

    $time=StrToTime($time);

    3、时间戳转换成日期

    $time="1366704555";

    $time=date("Y-m-d H:i:s",$time);

    4、获取指定日期

  • date_default_timezone_set( 'Asia/Shanghai' );

  • echo "今天:" , date ( "Y-m-d" ,time()), "<br>" ;

  • echo "今天:" , date ( "Y-m-d" , strtotime ( "26 april 2013" )), "<br>" ;

  • echo "昨天:" , date ( "Y-m-d" , strtotime ( "-1 day" )), "<br>" ;

  • echo "明天:" , date ( "Y-m-d" , strtotime ( "+1 day" )), "<br>" ;

  • echo "一周后:" , date ( "Y-m-d" , strtotime ( "+1 week" )), "<br>" ;

  • echo "一周零两天四小时两秒后:" , date ( "Y-m-d G:H:s" , strtotime ( "+1 week 2 days 4 hours 2 seconds" )), "<br>" ;

  • echo "下个星期四:" , date ( "Y-m-d" , strtotime ( "next Thursday" )), "<br>" ;

  • echo "上个周一:" . date ( "Y-m-d" , strtotime ( "last Monday" )). "<br>" ;

  • echo "一个月前:" . date ( "Y-m-d" , strtotime ( "last month" )). "<br>" ;

  • echo "一个月后:" . date ( "Y-m-d" , strtotime ( "+1 month" )). "<br>" ;

  • echo "十年后:" . date ( "Y-m-d" , strtotime ( "+10 year" )). "<br>" ;

  • 5、php获取微博(博文、动态)发表于多久时间前

    另一方法: http://xuqin.blog.51cto.com/5183168/1264254

  • function maktimes( $time ){

  • $t =time()- $time ;

  • $f = array (

  • '31536000' => '年' ,

  • '2592000' => '个月' ,

  • '604800' => '星期' ,

  • '86400' => '天' ,

  • '3600' => '小时' ,

  • '60' => '分钟' ,

  • '1' => '秒'

  • foreach ( $f as $k => $v ){

  • if (0 != $c = floor ( $t /(int) $k )){

  • return '发表于' . $c . $v . '前' ;

  • date_default_timezone_set('Asia/Shanghai');

  • $time=date("Y-m-d H:i:s");

  • $time=StrToTime($time);

  • $time = "1366939913" ;

  • echo maktimes( $time );

  • 6、php计算两日期剩余(间隔)时间天数

  • function format( $a , $b ){

  • //检查两个日期大小,默认前小后大,如果前大后小则交换位置以保证前小后大

  • if ( strtotime ( $a )> strtotime ( $b )) list( $a , $b )= array ( $b , $a );

  • $start = strtotime ( $a );

  • $stop = strtotime ( $b );

  • $extend = ( $stop - $start )/86400;

  • $result [ 'extends' ] = $extend ; //共多少天

  • if ( $extend <7){ //如果小于7天直接返回天数

  • $result [ 'daily' ] = $extend ;

  • } elseif ( $extend <=31){ //小于28天则返回周数,由于闰年2月满足了

  • if ( $stop == strtotime ( $a . '+1 month' )){

  • $result [ 'monthly' ] = 1;

  • } else {

  • $w = floor ( $extend /7);

  • $d = ( $stop - strtotime ( $a . '+' . $w . ' week' ))/86400;

  • $result [ 'weekly' ]  = $w ;

  • $result [ 'daily' ]   = $d ;

  • } else {

  • $y = floor ( $extend /365);

  • if ( $y >=1){ //如果超过一年

  • $start = strtotime ( $a . '+' . $y . 'year' );

  • $a = date ( 'Y-m-d' , $start );

  • //判断是否真的已经有了一年了,如果没有的话就开减

  • if ( $start > $stop ){

  • $a = date ( 'Y-m-d' , strtotime ( $a . '-1 month' ));

  • $m =11;

  • $y --;

  • $extend = ( $stop - strtotime ( $a ))/86400;

  • if (isset( $m )){

  • $w = floor ( $extend /7);

  • $d = $extend - $w *7;

  • } else {

  • $m = isset( $m )? $m : round ( $extend /30);

  • $stop >= strtotime ( $a . '+' . $m . 'month' )? $m : $m --;

  • if ( $stop >= strtotime ( $a . '+' . $m . 'month' )){

  • $d = $w =( $stop - strtotime ( $a . '+' . $m . 'month' ))/86400;

  • $w = floor ( $w /7);

  • $d = $d - $w *7;

  • $result [ 'yearly' ]  = $y ;

  • $result [ 'monthly' ] = $m ;

  • $result [ 'weekly' ]  = $w ;

  • $result [ 'daily' ]   = isset( $d )? $d :null;

  • return array_filter ( $result );

  • echo '<pre />' ;

  • print_r(format( '2013-4-2' , '2013-5-1' ));

  • echo '<pre />' ;

  • echo '<hr />' ;

  • $ret_arr =format( '2013-3-2' , '2013-5-1' );

  • echo '共' . $ret_arr [ 'extends' ]. '天' ;

  • echo '<br />' ;

  • echo $ret_arr [ 'yearly' ]. '年' ;

  • echo $ret_arr [ 'monthly' ]. '月' ;

  • echo $ret_arr [ 'weekly' ]. '周' ;

  • echo $ret_arr [ 'daily' ]. '天' ;

  • Array
        [extends] => 29
        [weekly] => 4
        [daily] => 1
    年1月4周1天

    7、获取两日期差值数组

  • * 获取两日期差值数组

  • * 边界 限定符:

  • * () 不包含边界

  • * [] 包含边界

  • * (] 不包含左边界

  • * [) 不包含右边界

  • * @param string $start_create_date

  • * @param string $end_create_date

  • * @param string $inclusive 是否包含边界

  • * @return array

  • function getDateDiffArray( $start_create_date , $end_create_date , $inclusive = '[]' ){

  • static $day_interval = 86400;

  • $data = array ();

  • $start = (int) strtotime ( $start_create_date );

  • $end = (int) strtotime ( $end_create_date );

  • if ( $start > $end ) return $data ;

  • for ( $start += $day_interval ; $start < $end ;){

  • $data [] = date ( 'Y-m-d' , $start );

  • $start += $day_interval ;

  • switch ( $inclusive ){

  • case '()' :

  • break ;

  • case '[]' :

  • array_unshift ( $data , $start_create_date );

  • if ( $start_create_date != $end_create_date )

  • $data [] = $end_create_date ;

  • break ;

  • case '(]' :

  • $data [] = $end_create_date ;

  • break ;

  • case '[)' :

  • array_unshift ( $data , $start_create_date );

  • break ;

  • default :

  • break ;

  • return $data ;

  • echo '<pre />' ;

  • print_r( getDateDiffArray( "2013-04-26" , "2013-05-01" ));

  • echo '<pre />' ;

  • Array
        [0] => 2013-04-26
        [1] => 2013-04-27
        [2] => 2013-04-28
        [3] => 2013-04-29
        [4] => 2013-04-30
        [5] => 2013-05-01
     
  • function intervalDate($begDate,$endDate){

  • $date = array();

  • $begTime = strtotime($begDate)+86400;

  • $endTime = strtotime($endDate);

  • while($begTime < $endTime){

  • $date[]= date("Y-n-d",$begTime);

  • $begTime+=86400;

  • return$date;

  • $begDate="2013-04-26";

  • $endDate="2013-05-01";

  • echo"<pre>";

  •    print_r(intervalDate($begDate,$endDate));

  • Array
        [0] => 2013-4-27
        [1] => 2013-4-28
        [2] => 2013-4-29
        [3] => 2013-4-30
    

    8、获取某个日期的 周数、周对应的开始结束时间

  • //获取某个日期的 周数、周对应的开始结束时间

  • function getWeekStartEndDay($day){

  • $g  = strftime("%u",strtotime($day));

  • returnarray(

  • 'week_num'=>strftime("%V",strtotime($day)),

  • 'week_start_day'=>strftime('%Y-%m-%d',strtotime($day)-($g-1)*86400),

  • 'week_start_day_cn'=>strftime('%Y年%m月%d日',strtotime($day)-($g-1)*86400),

  • 'week_end_day'=>strftime('%Y-%m-%d',strtotime($day) + (7-$g)*86400),

  • 'week_end_day_cn'=>strftime('%Y年%m月%d日',strtotime($day) + (7-$g)*86400)

  • echo'<pre />';

  •    print_r(getWeekStartEndDay("2013-04-26"));

  • Array
        [week_num] => 
        [week_start_day] => 2013-04-27
        [week_start_day_cn] => 2013年04月27日
        [week_end_day] => 2013-05-03
        [week_end_day_cn] => 2013年05月03日
    

    9、php获取服务器时间

    http://xuqin.blog.51cto.com/5183168/1177160

    10、php根据出生日期计算年龄

    http://xuqin.blog.51cto.com/5183168/1168369