PHP 板


LINE

看板 PHP  RSS
这学期修课的关系,接触了PHP, 期末的自订term project刚好需要许多日期时间的计算, 所以就写了个class(PHP5),也当作是一种练习吧XD 稍微修改了一些内容, 因为後来领会了class中的属性, 与其用var宣告变数名称, 还不如用阵列来储存更符合PHP的处理方式, 因为就算直接宣告变数名称, 直译的PHP还是需要对变数成员做搜寻的动作。 所以把之前一堆var变数改成$this->_[]阵列来存放。 下载位置:http://o0o.myweb.hinet.net/php/date.inc.php <?php # #˙objDate日期时间物件 作者:[email protected] # P.S.本物件受到unix时间戳的限制,仅可处理1970~2038年的日期。 # #˙属性:与getdate()函数传回阵列相同 # $this->_['seconds'] 秒 # $this->_['minutes'] 分 # $this->_['hours'] 时 # $this->_['mday'] 日 # $this->_['mon'] 月 # $this->_['year'] 年 # $this->_['yday'] 一年中的天数 # $this->_['wday'] 星期 # $this->_['weekday'] 星期完整名称 # $this->_['month'] 月份完整名称 # $this->_[0] timestamp秒数 # #˙方法: # bool SameAs($interval,$that=null) # 传回与$that日期时间是否相同,可比较多项目 # [1]单位-比较单位,可用多项目如用'dw'检查[日/星期]相同 # [2]被比较-日期时间的文字或此物件,若不填则以此刻为准 # # float Diff($interval,$that=null) # 传回与$that日期时间的正负值差距(日、时、分、星期会有小数点) # [1]单位-日期时间差距单位,如'd'检查差几[日] # [2]被比较-日期时间的文字或此物件,若不填则以此刻为准 # # objDate Add($interval,$value) # 传回加减後的日期时间 # [1]单位-日期时间差距单位,如'd'则加减几[日] # [2]差值-正负整数 # # objDate SwitchSecond($second=0) 改变(此刻)日期时间的"秒" # objDate SwitchMinute($minute=0) 改变(此时)日期时间的"分" # objDate SwitchHour($hour=0)   改变(今天)日期时间的"小时" # objDate SwitchDay($day=1)    改变(本月)日期时间的"日" # objDate SwitchMonth($month=1)  改变(今年)日期时间的"月" # objDate SwitchYear($year)    改变日期时间的"年" # # objDate SwitchDate($month=1,$day=1)改变(今年)日期时间的"月日" # objDate SwitchWeekDay($weekday=0) 改变(本星期)日期时间的"星期",0=星期日 # # objDate MonthDayFirst() 传回本月第一天 # objDate MonthDayLast() 传回本月最後一天 # objDate YearDayFirst() 传回今年第一天 # objDate YearDayLast()  传回今年最後一天 # # int MonthDays() 传回本月天数 # int YearDays()  传回今年天数 # # str ToDateTime() 传回日期时间格式(Y-m-d G:i:s) # str ToDate()   仅传回日期格式(Y-m-d) # str ToTime()   仅传回时间格式(G:i:s) # str ToGMT()    传回格林威治时间(Y-m-d H:M:S) # # str ToMonthName($fullname=False) 传回月份名称 # str ToWeekDayName($fullname=True) 传回星期名称 # str ToAMPM($uppercase=True)    传回上午/下午 # # str ToFormat($format) 根据传入的$format传回指定的日期时间格式 # #˙使用范例: # $Birth=new objDate('1983/6/14');//传入日期 # $Today=new objDate();//传入值为空或无法辨识则以此刻为准 # echo "<p>我生日是{$Birth},现在已经{$Birth->Diff('y')}岁啦! # <p>今年生日星期几?{$Birth->SwitchYear($Today->_['year'])->ToWeekDayName()}, # <p>今年二月有几天?{$Today->SwitchMonth(2)->MonthDays()}, # <p>GMT和此刻同月同日?{$Today->SameAs('md',$Today->ToGMT())}"; #˙ # class objDate{ public$_=array(); function __construct($datetime=null){//建构:设定时间 if(!is_numeric($datetime))$datetime=strtotime($datetime);//尝试转换文字 $this->_=(is_numeric($datetime))?getdate($datetime):getdate();//失败?此刻 } function __toString(){//输出文字 return$this->ToDate();//大部分应用只需日期 } function SameAs($interval,$that=null){//传回日期时间是否相同,可比较多项目 if(!($that instanceof objDate))$that=new objDate($that);//不同格式则转换 $interval=strtolower($interval);//转换为小写 if(False!==strpos($interval,'d')) if($this->_['mday']!=$that->_['mday'])return False;//日 if(False!==strpos($interval,'m')) if($this->_['mon']!=$that->_['mon'])return False;//月 if(False!==strpos($interval,'y')) if($this->_['year']!=$that->_['year'])return False;//年 if(False!==strpos($interval,'s')) if($this->_['seconds']!=$that->_['seconds'])return False;//秒 if(False!==strpos($interval,'n')) if($this->_['minutes']!=$that->_['minutes'])return False;//分 if(False!==strpos($interval,'h')) if($this->_['hours']!=$that->_['hours'])return False;//时 if(False!==strpos($interval,'w')) if($this->_['wday']!=$that->_['wday'])return False;//星期 return True;//全部Pass则视为相同 } function Diff($interval,$that=null){//传回日期时间的差距 if(!($that instanceof objDate))$that=new objDate($that);//不同格式则转换 switch(strtolower($interval)){//时距 case'n':return($that->_[0]-$this->_[0])/60;//分 case'h':return($that->_[0]-$this->_[0])/3600;//时 case'd':return($that->_[0]-$this->_[0])/86400;//天 case'm':return($that->_['year']-$this->_['year'])*12+ $that->_['mon']-$this->_['mon'];//月 case'y':return$that->_['year']-$this->_['year'];//年 case'w':return($that->_[0]-$this->_[0])/604800;//星期 default:return$that->_[0]-$this->_[0];//秒 } } function Add($interval,$value){//传回加减後的日期时间 switch(strtolower($interval)){//时距 case's':return$this->SwitchSecond($this->_['seconds']+$value);//秒 case'n':return$this->SwitchMinute($this->_['minutes']+$value);//分 case'h':return$this->SwitchHour($this->_['hours']+$value);//时 case'd':return$this->SwitchDay($this->_['mday']+$value);//日 case'm':return$this->SwitchMonth($this->_['mon']+$value);//月 case'y':return$this->SwitchYear($this->_['year']+$value);//年 case'w':return$this->SwitchDay($this->_['mday']+$value*7);//星期 default:return$this;//不处理 } } function SwitchSecond($second=0){//改变日期时间的"秒" return new objDate( mktime($this->_['hours'],$this->_['minutes'],$second, $this->_['mon'],$this->_['mday'],$this->_['year']));//秒 } function SwitchMinute($minute=0){//改变日期时间的"分" return new objDate( mktime($this->_['hours'],$minute,$this->_['seconds'], $this->_['mon'],$this->_['mday'],$this->_['year']));//分 } function SwitchHour($hour=0){//改变日期时间的"小时" return new objDate( mktime($hour,$this->_['minutes'],$this->_['seconds'], $this->_['mon'],$this->_['mday'],$this->_['year']));//时 } function SwitchDay($day=1){//改变日期时间的"日" return new objDate( mktime($this->_['hours'],$this->_['minutes'],$this->_['seconds'], $this->_['mon'],$day,$this->_['year']));//日 } function SwitchMonth($month=1){//改变日期时间的"月" return new objDate( mktime($this->_['hours'],$this->_['minutes'],$this->_['seconds'], $month,$this->_['mday'],$this->_['year']));//月 } function SwitchDate($month=1,$day=1){//改变日期时间的"月日" return new objDate( mktime($this->_['hours'],$this->_['minutes'],$this->_['seconds'], $month,$day,$this->_['year']));//月日 } function SwitchYear($year){//改变日期时间的"年" return new objDate( mktime($this->_['hours'],$this->_['minutes'],$this->_['seconds'], $this->_['mon'],$this->_['mday'],$year));//年 } function SwitchWeekDay($weekday=0){//改变日期时间的"星期",0=星期日 return new objDate( mktime($this->_['hours'],$this->_['minutes'],$this->_['seconds'], $this->_['mon'],$this->_['mday']-$this->_['wday']+$weekday, $this->_['year']));//星期 } function MonthDayFirst(){//传回本月第一天 return$this->SwitchDay(1); } function MonthDayLast(){//传回本月最後一天 return$this->SwitchDate($this->_['mon']+1,0); } function YearDayFirst(){//传回本年第一天 return$this->SwitchDate(1,1); } function YearDayLast(){//传回本年最後一天 return$this->SwitchDate(12,31); } function MonthDays(){//传回本月天数 return$this->MonthDayLast()->_['mday']; } function YearDays(){//传回本年天数 return$this->YearDayLast()->_['yday']+1; } function ToDateTime(){//传回日期时间格式 return$this->ToFormat('Y-m-d G:i:s'); } function ToDate(){//仅传回日期格式 return$this->ToFormat('Y-m-d'); } function ToTime(){//仅传回时间格式 return$this->ToFormat('G:i:s'); } function ToMonthName($fullname=False){//传回月份名称 return($fullname)?$this->_['month']:$this->ToFormat('M'); } function ToWeekDayName($fullname=True){//传回星期名称 return($fullname)?$this->_['weekday']:$this->ToFormat('D'); } function ToAMPM($uppercase=True){//传回上午/下午 return$this->ToFormat($uppercase?'A':'a'); } function ToFormat($format){//传回特定格式日期时间 return date($format,$this->_[0]); } function ToGMT(){//传回格林威治时间 return gmstrftime('%Y-%m-%d %H:%M:%S',$this->_[0]); } } ?> ※ 编辑: l1l 来自: 140.113.164.11 (05/07 01:32) ※ 编辑: l1l 来自: 140.113.164.11 (05/09 18:35)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP