<?
/* *
* 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 );
}
}
?>
/* *
* 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 );
}
}
?>