个人技术作品 - PHP 时间戳及格林威治时间互相转换及一些常用的时间比较的API

 

<?
/* *
 * fun.TimeApi.php
 * 
 * GMT 系列 - 功能库接口 1
 * 
 * 功能库名: 时间处理功能库接口
 * 
 * 功能库内容介绍:
 *   1. 格林威治时间快速转时间戳
 *   2. 时间戳转格林威治时间
 *   3. 计算时间间隔
 *   4. 判断是否闰年
 *   5. 闰年间隔判断
 
*/

/* *
 * 把格林威治时间转为时间戳
 
*/
function  GmtToUnix( $GmtDate )
{
 
$DateArr   =   explode ( '   ' , $GmtDate );  //  分割GMT日期为 日期 | 时间

 
/*  在日期中取得年,月,日  */
 
$pDate   =   split ( ' [/.-] ' , $DateArr [ 0 ]);
 
$Year   =   $pDate [ 0 ];
 
$Month   =   $pDate [ 1 ];
 
$Day   =   $pDate [ 2 ];
 
 
/*  在时间中取得时,分,秒  */
 
$pTime   =   split ( ' [:.-] ' , $DateArr [ 1 ]);
 
$Hour   =   $pTime [ 0 ];
 
$Minute   =   $pTime [ 1 ];
 
$Second   =   $pTime [ 2 ];
 
 
if ( $Year   ==   ''   ||   ! is_numeric ( $Year )) $Year   =   0 ;
 
if ( $Month   ==   ''   ||   ! is_numeric ( $Month )) $Month   =   0 ;
 
if ( $Day   ==   ''   ||   ! is_numeric ( $Day )) $Day   =   0 ;
 
if ( $Hour   ==   ''   ||   ! is_numeric ( $Hour )) $Hour   =   0 ;
 
if ( $Minute   ==   ''   ||   ! is_numeric ( $Minute )) $Minute   =   0 ;
 
if ( $Second   ==   ''   ||   ! is_numeric ( $Second )) $Second   =   0 ;
 
 
return   mktime ( $Hour , $Minute , $Second , $Month , $Day , $Year );
}

/* *
 * 把时间戳转换为格林威治时间
 * 
 * 建议使用php自带的 gmdate / date
 
*/
function  UnixToGmt( $format_string   =   " Y-m-d H:i:s "   , $UnixTime   =   0 )
{
 
return  @ gmdate ( $format_string , $UnixTime );
}

/* *
 * 计算时间间隔
 
*/
function  DiffDateTime( $interval , $diff_datetime1 , $diff_datetime2 )
{
 
if ( is_numeric ( $diff_datetime1 &&   ! is_numeric ( $diff_datetime2 ))
  
$_datetime1   =   $diff_datetime1 ; $_datetime2   =  GmtToUnix( $diff_datetime2 );
 
if ( ! is_numeric ( $diff_datetime1 &&   is_numeric ( $diff_datetime2 ));
  
$_datetime1   =  GmtToUnix( $diff_datetime1 ); $_datetime2   =   $diff_datetime2 ;
 
if ( is_numeric ( $diff_datetime1 &&   is_numeric ( $diff_datetime2 ))
  
$_datetime1   =   $diff_datetime1 ; $_datetime2   =   $diff_datetime2 ;
 
if ( ! is_numeric ( $diff_datetime1 &&   is_numeric ( ! $diff_datetime2 ))
  
$_datetime1   =  GmtToUnix( $diff_datetime1 ); $_datetime2   =  GmtToUnix( $diff_datetime2 );
 
 
$diffUnixSec   =   $_datetime1   -   $_datetime2 ;
 
switch  ( $interval ){
  
case   ' Y ' :
   
return   bcdiv ( $diffUnixSec ,   31536000 );
   
break ;
  
case   ' W ' :
   
return   bcdiv ( $diffUnixSec ,   604800 ); 
   
break ;
  
case   ' D ' :
   
return   bcdiv ( $diffUnixSec ,   86400 );
   
break ;
  
case   ' H ' :
   
return   bcdiv ( $diffUnixSec ,   3600 );
   
break ;
  
case   ' M ' :
   
return   bcdiv ( $diffUnixSec ,   60 );
   
break ;
  
case   ' S ' :
   
return   $diffUnixSec ;
   
break ;
  
default :
   
return   false ;
 }
}

/* *
 * 闰年判断
 * @return boolean
 
*/
function  isLeapYear( $Year )
{
 
if ( bcmod ( $Year , 4 ==   0   &&   bcmod ( $Year , 100 !==   0   ||   bcmod ( $Year , 400 ==   0 ) {
  
return   true ;
 } 
else  {
  
return   false ;
 }
}

/* *
 * 闰年间隔计算
 
*/
function  NextLeapYear( $Year , $return_year   =   false )
{  
 
if ( $return_year ){
  
return   $Year   +  ( 4   -  (int) bcmod ( $Year , 4 ));
 } 
else  {
  
return   4   -  (int) bcmod ( $Year , 4 );
 }
}
?>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值