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

本文介绍了一套名为GMT的时间处理功能库接口,包括格林威治时间与时间戳的相互转换、时间间隔计算、闰年判断及闰年间隔计算等功能。提供了PHP实现的具体函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

<?
/**
 * 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);
 }
}
?> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值