thinkphp 比对过去时间距离现在时间多少的问题
<?php
import('ORG.Util.Date');// 导入日期类
$Date = new Date();//实例化类
$time_diff = $Date->timeDiff(date('Y-m-d H:i:s', $time)); //比对时间
?>
date类
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2009 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id: Date.class.php 2689 2012-02-01 06:26:19Z liu21st $ /**
+------------------------------------------------------------------------------
* 日期时间操作类
+------------------------------------------------------------------------------
* @category ORG
* @package ORG
* @subpackage Date
* @author liu21st <liu21st@gmail.com>
* @version $Id: Date.class.php 2689 2012-02-01 06:26:19Z liu21st $
+------------------------------------------------------------------------------
*/
class Date extends Think
{//类定义开始 /**
+----------------------------------------------------------
* 日期的时间戳
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $date; /**
+----------------------------------------------------------
* 时区
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $timezone; /**
+----------------------------------------------------------
* 年
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $year; /**
+----------------------------------------------------------
* 月
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $month; /**
+----------------------------------------------------------
* 日
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $day; /**
+----------------------------------------------------------
* 时
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $hour; /**
+----------------------------------------------------------
* 分
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $minute; /**
+----------------------------------------------------------
* 秒
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $second; /**
+----------------------------------------------------------
* 星期的数字表示
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $weekday; /**
+----------------------------------------------------------
* 星期的完整表示
+----------------------------------------------------------
* @var string
* @access protected
+----------------------------------------------------------
*/
protected $cWeekday; /**
+----------------------------------------------------------
* 一年中的天数 0-365
+----------------------------------------------------------
* @var integer
* @access protected
+----------------------------------------------------------
*/
protected $yDay; /**
+----------------------------------------------------------
* 月份的完整表示
+----------------------------------------------------------
* @var string
* @access protected
+----------------------------------------------------------
*/
protected $cMonth; /**
+----------------------------------------------------------
* 日期CDATE表示
+----------------------------------------------------------
* @var string
* @access protected
+----------------------------------------------------------
*/
protected $CDATE; /**
+----------------------------------------------------------
* 日期的YMD表示
+----------------------------------------------------------
* @var string
* @access protected
+----------------------------------------------------------
*/
protected $YMD; /**
+----------------------------------------------------------
* 时间的输出表示
+----------------------------------------------------------
* @var string
* @access protected
+----------------------------------------------------------
*/
protected $CTIME;
protected $Week = array("日","一","二","三","四","五","六"); /**
+----------------------------------------------------------
* 架构函数
* 创建一个Date对象
+----------------------------------------------------------
* @param mixed $date 日期
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
*/
public function __construct($date='')
{
//分析日期
$this->date = $this->parse($date);
$this->setDate($this->date);
} /**
+----------------------------------------------------------
* 日期分析
* 返回时间戳
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param mixed $date 日期
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function parse($date)
{
if (is_string($date)) {
if (($date == "") || strtotime($date) == -1) {
//为空默认取得当前时间戳
$tmpdate = time();
} else {
//把字符串转换成UNIX时间戳
$tmpdate = strtotime($date);
}
} elseif (is_null($date)) {
//为空默认取得当前时间戳
$tmpdate = time(); } elseif (is_numeric($date)) {
//数字格式直接转换为时间戳
$tmpdate = $date; } else {
if (get_class($date) == "date") {
//如果是Date对象
$tmpdate = $date->date;
} else {
//默认取当前时间戳
$tmpdate = time();
}
} return $tmpdate;
} /**
+----------------------------------------------------------
* 验证日期数据是否有效
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param mixed $date 日期数据
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function valid($date)
{ } /**
+----------------------------------------------------------
* 日期参数设置
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param integer $date 日期时间戳
+----------------------------------------------------------
* @return void
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function setDate($date)
{
$dateArray = getdate($date);
$this->date = $dateArray[0]; //时间戳
$this->second = $dateArray["seconds"]; //秒
$this->minute = $dateArray["minutes"]; //分
$this->hour = $dateArray["hours"]; //时
$this->day = $dateArray["mday"]; //日
$this->month = $dateArray["mon"]; //月
$this->year = $dateArray["year"]; //年 $this->weekday = $dateArray["wday"]; //星期 0~6
$this->cWeekday = '星期'.$this->Week[$this->weekday];//$dateArray["weekday"]; //星期完整表示
$this->yDay = $dateArray["yday"]; //一年中的天数 0-365
$this->cMonth = $dateArray["month"]; //月份的完整表示 $this->CDATE = $this->format("%Y-%m-%d");//日期表示
$this->YMD = $this->format("%Y%m%d"); //简单日期
$this->CTIME = $this->format("%H:%M:%S");//时间表示 return ;
} /**
+----------------------------------------------------------
* 日期格式化
* 默认返回 1970-01-01 11:30:45 格式
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param string $format 格式化参数
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function format($format = "%Y-%m-%d %H:%M:%S") {
return strftime($format, $this->date);
} /**
+----------------------------------------------------------
* 是否为闰年
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function isLeapYear($year='')
{
if(empty($year)) {
$year = $this->year;
}
return ((($year % 4) == 0) && (($year % 100) != 0) || (($year % 400) == 0));
} /**
+----------------------------------------------------------
* 计算日期差
*
* w - weeks
* d - days
* h - hours
* m - minutes
* s - seconds
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param mixed $date 要比较的日期
* @param string $elaps 比较跨度
+----------------------------------------------------------
* @return integer
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function dateDiff($date, $elaps = "d")
{
$__DAYS_PER_WEEK__ = (7);
$__DAYS_PER_MONTH__ = (30);
$__DAYS_PER_YEAR__ = (365);
$__HOURS_IN_A_DAY__ = (24);
$__MINUTES_IN_A_DAY__ = (1440);
$__SECONDS_IN_A_DAY__ = (86400);
//计算天数差
$__DAYSELAPS = ($this->parse($date) - $this->date) / $__SECONDS_IN_A_DAY__ ;
switch ($elaps) {
case "y"://转换成年
$__DAYSELAPS = $__DAYSELAPS / $__DAYS_PER_YEAR__;
break;
case "M"://转换成月
$__DAYSELAPS = $__DAYSELAPS / $__DAYS_PER_MONTH__;
break;
case "w"://转换成星期
$__DAYSELAPS = $__DAYSELAPS / $__DAYS_PER_WEEK__;
break;
case "h"://转换成小时
$__DAYSELAPS = $__DAYSELAPS * $__HOURS_IN_A_DAY__;
break;
case "m"://转换成分钟
$__DAYSELAPS = $__DAYSELAPS * $__MINUTES_IN_A_DAY__;
break;
case "s"://转换成秒
$__DAYSELAPS = $__DAYSELAPS * $__SECONDS_IN_A_DAY__;
break;
}
return $__DAYSELAPS;
} /**
+----------------------------------------------------------
* 人性化的计算日期差
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param mixed $time 要比较的时间
* @param mixed $precision 返回的精度
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function timeDiff( $time ,$precision=false) {
if(!is_numeric($precision) && !is_bool($precision)) {
static $_diff = array('y'=>'年','M'=>'个月','d'=>'天','w'=>'周','s'=>'秒','h'=>'小时','m'=>'分钟');
return ceil($this->dateDiff($time,$precision)).$_diff[$precision].'前';
}
$diff = abs($this->parse($time) - $this->date);
static $chunks = array(array(31536000,'年'),array(2592000,'个月'),array(604800,'周'),array(86400,'天'),array(3600 ,'小时'),array(60,'分钟'),array(1,'秒'));
$count =0;
$since = '';
for($i=0;$i<count($chunks);$i++) {
if($diff>=$chunks[$i][0]) {
$num = floor($diff/$chunks[$i][0]);
$since .= sprintf('%d'.$chunks[$i][1],$num);
$diff = (int)($diff-$chunks[$i][0]*$num);
$count++;
if(!$precision || $count>=$precision) {
break;
}
}
}
return $since.'前';
} /**
+----------------------------------------------------------
* 计算月份的第一天
* 返回Date对象
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function firstDayOfMonth() {
return (new Date(strftime("%Y-%m-%d", mktime(0, 0, 0,
$this->month,
1,
$this->year ))));
} /**
+----------------------------------------------------------
* 计算年份的第一天
* 返回Date对象
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function firstDayOfYear() {
return (new Date(strftime("%Y-%m-%d", mktime(0, 0, 0,
1,
1,
$this->year))));
} /**
+----------------------------------------------------------
* 计算月份的最后一天
* 返回Date对象
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function lastDayOfMonth() {
return (new Date(strftime("%Y-%m-%d", mktime(0, 0, 0,
$this->month + 1,
0,
$this->year ))));
} /**
+----------------------------------------------------------
* 计算年份的最后一天
* 返回Date对象
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function lastDayOfYear() {
return (new Date(strftime("%Y-%m-%d", mktime(0, 0, 0,
1,
0,
$this->year + 1))));
} /**
+----------------------------------------------------------
* 计算月份的最大天数
*
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @return integer
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function maxDayOfMonth()
{
$result = $this->dateDiff(strtotime($this->dateAdd(1,'m')),'d');
return $result;
} /**
+----------------------------------------------------------
* 取得指定间隔日期
*
* yyyy - 年
* q - 季度
* m - 月
* y - day of year
* d - 日
* w - 周
* ww - week of year
* h - 小时
* n - 分钟
* s - 秒
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param integer $number 间隔数目
* @param string $interval 比较类型
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function dateAdd($number = 0, $interval = "d")
{
$hours = $this->hour;
$minutes = $this->minute;
$seconds = $this->second;
$month = $this->month;
$day = $this->day;
$year = $this->year; switch ($interval)
{
case "yyyy":
//---Add $number to year
$year += $number;
break; case "q":
//---Add $number to quarter
$month += ($number*3);
break; case "m":
//---Add $number to month
$month += $number;
break; case "y":
case "d":
case "w":
//---Add $number to day of year, day, day of week
$day += $number;
break; case "ww":
//---Add $number to week
$day += ($number*7);
break; case "h":
//---Add $number to hours
$hours += $number;
break; case "n":
//---Add $number to minutes
$minutes += $number;
break; case "s":
//---Add $number to seconds
$seconds += $number;
break;
} return (new Date(mktime($hours,
$minutes,
$seconds,
$month,
$day,
$year))); } /**
+----------------------------------------------------------
* 日期数字转中文
* 用于日和月、周
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param integer $number 日期数字
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function numberToCh($number)
{
$number = intval($number);
$array = array('一','二','三','四','五','六','七','八','九','十');
$str = '';
if($number ==0) { $str .= "十" ;}
if($number < 10){
$str .= $array[$number-1] ;
}
elseif($number < 20 ){
$str .= "十".$array[$number-11];
}
elseif($number < 30 ){
$str .= "二十".$array[$number-21];
}
else{
$str .= "三十".$array[$number-31];
}
return $str;
} /**
+----------------------------------------------------------
* 年份数字转中文
*
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param integer $yearStr 年份数字
* @param boolean $flag 是否显示公元
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function yearToCh( $yearStr ,$flag=false ){
$array = array('零','一','二','三','四','五','六','七','八','九');
$str = $flag? '公元' : '';
for($i=0;$i<4;$i++){
$str .= $array[substr($yearStr,$i,1)];
}
return $str;
} /**
+----------------------------------------------------------
* 判断日期 所属 干支 生肖 星座
* type 参数:XZ 星座 GZ 干支 SX 生肖
*
+----------------------------------------------------------
* @static
* @access public
+----------------------------------------------------------
* @param string $type 获取信息类型
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
* @throws ThinkExecption
+----------------------------------------------------------
*/
public function magicInfo($type)
{
$result = '';
$m = $this->month;
$y = $this->year;
$d = $this->day; switch ($type)
{
case 'XZ'://星座
$XZDict = array('摩羯','宝瓶','双鱼','白羊','金牛','双子','巨蟹','狮子','处女','天秤','天蝎','射手');
$Zone = array(1222,122,222,321,421,522,622,722,822,922,1022,1122,1222);
if((100*$m+$d)>=$Zone[0]||(100*$m+$d)<$Zone[1])
$i=0;
else
for($i=1;$i<12;$i++){
if((100*$m+$d)>=$Zone[$i]&&(100*$m+$d)<$Zone[$i+1])
break;
}
$result = $XZDict[$i].'座';
break; case 'GZ'://干支
$GZDict = array(
array('甲','乙','丙','丁','戊','己','庚','辛','壬','癸'),
array('子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥')
);
$i= $y -1900+36 ;
$result = $GZDict[0][$i%10].$GZDict[1][$i%12];
break; case 'SX'://生肖
$SXDict = array('鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪');
$result = $SXDict[($y-4)%12];
break; }
return $result;
} public function __toString()
{
return $this->format();
}
}//类定义结束
?>
thinkphp 比对过去时间距离现在时间多少的问题的更多相关文章
- .net 计算当前时间距离今晚00:00:00还有多少分多少秒
string dateDiff = null; DateTime DateTime1 = DateTime.Now; //第二天的0点00分00秒 DateTime DateTime2 = DateT ...
- js 计算过去和未来的时间距离现在多少天?
计算传入的任意一时间.计算出这个时间距离现在还有多少天!或者计算过去的时间距离现在已经过去了多少天! 返回值有两种! 1.负值 代表过去了多少天 2.正值 代表距离设定的时间还有多少天 说明:距离设定 ...
- JavaScript 实现发布消息后,距离当前时间的实现
某条消息发布后,距离当前时间多久的时间显示 //显示发布时间的函数 function pastTime(_createTime) { //var createTime = _createTime.su ...
- C# 计算传入的时间距离今天的时间差
/// <summary> /// 计算传入的时间距离今天的时间差 /// </summary> /// <param name="dt">&l ...
- C# 计算当前时间距离今晚00:00:00还有多少分多少秒
.net 计算当前时间距离今晚00:00:00还有多少分多少秒 string dateDiff = null;//获取当前时间 DateTime DateTime1 = DateTime.Now; / ...
- Java 获取当前时间距离当天凌晨的秒数
原文出自:https://blog.csdn.net/seesun2012 在前期项目中遇到一个客户端与服务器间的时间同步问题,需要获取到当前时间与当天凌晨时间距离的秒数,写这篇文章主要是为了总结一下 ...
- Android 获取当前日期距离过期时间的日期差值的完整方法直接使用
/*** * 获取当前日期距离过期时间的日期差值 * @param endTime * @return */public String dateDiff(String endTime) { Strin ...
- Jmeter 获取系统时间,和对系统时间进行增减时间
今天做了一个测试,比如发送短信验证码之后的, 验证90s被验证码有效的问题 那如何测试开发的代码,判断了90s内有效呢1. 验证码获取时间距离现在89秒,验证通过2. 验证码获取时间距离现在90秒,验 ...
- linux 系统文件类型、系统安装时间、系统启动时间、系统运行时间、设置及显示时间、系统时间和硬件时间
系统文件类型: 1) $mout 2) df -l:仅列出本地文件系统:-h (--human-readable):-T:文件系统类型 $df -lhf 3) file -s (--special-f ...
随机推荐
- PHP临时文件session的分级存储与定期删除
在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,如果说并发访问很大或者 session建立太多,目录下就会存在大量类似sess_xxxxxx的sessio ...
- [学习笔记]设计模式之Command
为方便读者,本文已添加至索引: 设计模式 学习笔记索引 写在前面 在上篇Chain of Responsibility(职责链)模式笔记中,我们学习了一种行为型设计模式.今天,我们继续这一主题,来学习 ...
- sql 建立数据库,表格,索引,主键
---- 数据库: `message_db`-- -- --------------------------------------------------------create database ...
- (转)ASP.NET-关于Container dataitem 与 eval方法介绍
Container是一个数据容器,代表集合类或者dataview中的一行,而Container.dataitem代表该行的数据:所有的container 被存 放在是一个栈堆stack中,自动的将 ...
- CANoe 入门 Step by step系列(二)CAPL编程【转】
CAPL就是Communication Application Programming Laguage的缩写,CAPL类似于C语言的语法,因此所有的语法请参考C语言教程,这里不在这里进行详述,关于C语 ...
- 学习Swift--下标脚本
下标脚本 下标脚本可以定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问集合(collection),列表(list)或序列(sequenc ...
- [译]36 Days of Web Testing(四)
Day 19: UX 用户体验 Why ? 最近UX变得越来越火,用户提现往往会直接联想到易用性和设计. 在我看来,UX不仅仅是这两点.UX, User Experience ,对我而言,不单单是产 ...
- 基于STM32F10x的串口(USART)输入输出编程
1 前言 STM32有强大的固件库,绝大部分函数都可以有库里面的函数组合编写.固件库可以到ST官网(www.st.com)上下载,也可以搜索“STM32 固件库 v3.5”下载到固件库.本文章就是基于 ...
- scroller
sh做的js控件. 另外内部被scroller包裹的div不可以定位成absolute,会撑不出高度. 上面只是使用的注意事项. 很佩服人家能封装出这样的控件. 如果我也能写得出来就能毕业了,也不用担 ...
- 在python中使用zookeeper管理你的应用集群
http://www.zlovezl.cn/articles/40/ 简介: Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些 ...