PHP - Date - Time Functions - Manual
PHP - Date - Time Functions - Manual
PHP 5.6.0alpha2 released Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Exceptions Generators References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Context options and parameters Supported Protocols and Wrappers Security Introduction General considerations Installed as CGI binary Installed as an Apache module Filesystem Security Database Security Error Reporting Using Register Globals User Submitted Data Magic Quotes
www.php.net/manual/en/ref.datetime.php 1/27
2/17/14
Hiding PHP Keeping Current Features HTTP authentication with PHP Cookies Sessions Dealing with XForms Handling file uploads Using remote files Connection handling Persistent Database Connections Safe Mode Command line usage Garbage Collection DTrace Dynamic Tracing Function Reference Affecting PHP's Behaviour Audio Formats Manipulation Authentication Services Command Line Specific Extensions Compression and Archive Extensions Credit Card Processing Cryptography Extensions Database Extensions Date and Time Related Extensions File System Related Extensions Human Language and Character Encoding Support Image Processing and Generation Mail Related Extensions Mathematical Extensions Non-Text MIME Output Process Control Extensions Other Basic Extensions Other Services Search Engine Extensions Server Specific Extensions Session Extensions Text Processing Variable and Type Related Extensions Web Services Windows Only Extensions XML Manipulation Keyboard Shortcuts ?
www.php.net/manual/en/ref.datetime.php 2/27
2/17/14
This help j Next menu item k Previous menu item gp Previous man page gn Next man page G Scroll to bottom gg Scroll to top gh Goto homepage gs Goto search (current page) / Focus search box DatePeriod::__construct checkdate PHP Manual Function Reference Date and Time Related Extensions Date/Time Date/Time Introduction Installing/Configuring Predefined Constants DateTime DateTimeImmutable DateTimeInterface DateTimeZone DateInterval DatePeriod Date/Time Functions Supported Date and Time Formats List of Supported Timezones Change language: English Edit Report a Bug
www.php.net/manual/en/ref.datetime.php 3/27
2/17/14
2/17/14
time Return current Unix timestamp timezone_abbreviations_list Alias of DateTimeZone::listAbbreviations timezone_identifiers_list Alias of DateTimeZone::listIdentifiers timezone_location_get Alias of DateTimeZone::getLocation timezone_name_from_abbr Returns the timezone name from abbreviation timezone_name_get Alias of DateTimeZone::getName timezone_offset_get Alias of DateTimeZone::getOffset timezone_open Alias of DateTimeZone::__construct timezone_transitions_get Alias of DateTimeZone::getTransitions timezone_version_get Gets the version of the timezonedb
add a note
2/17/14
$ y e a r=$ t o d a y [ ' y e a r ' ] ; $ m d a y=$ t o d a y [ ' m d a y ' ] ; $ l a s t s u n=g e t l a s t ( $ m o n ,$ y e a r ) ; $ s u n d a y=$ l a s t s u n [ ' m d a y ' ] ; i f( $ s u n d a y<$ m d a y ){ $ m o n + + ; i f( $ m o n=1 3 ){ $ m o n=1 ; $ y e a r + + ; } $ l a s t s u n=g e t l a s t ( $ m o n ,$ y e a r ) ; $ s u n d a y=$ l a s t s u n [ ' m d a y ' ] ; } $ n e x t m e e t i n g=g e t d a t e ( m k t i m e ( 0 , 0 , 0 , $ m o n , $ s u n d a y , $ y e a r ) ) ; $ m o n t h=$ n e x t m e e t i n g [ ' m o n t h ' ] ; $ m d a y=$ n e x t m e e t i n g [ ' m d a y ' ] ; $ y e a r=$ n e x t m e e t i n g [ ' y e a r ' ] ; r e t u r n" $ m o n t h$ m d a y ,$ y e a r " ; } ? >
www.php.net/manual/en/ref.datetime.php
2/17/14
$ i n s t a l l e d V e r s i o n=s u b s t r ($ i n f o ,$ s t a r t ,$ e n d-$ s t a r t) ; e x e c (' p e c lr e m o t e i n f ot i m e z o n e d b ' ,& $ o u t p u t) ; $ a v a i l a b l e V e r s i o n=s u b s t r ($ o u t p u t [ 2 ] ,1 2) ; $ t h i s > a s s e r t E q u a l s ($ a v a i l a b l e V e r s i o n ,$ i n s t a l l e d V e r s i o n , ' T h ei n s t a l l e dt i m e z o n e d bi sn o ta c t u a l .I n s t a l l e d :' . $ i n s t a l l e d V e r s i o n . 'a v a i l a b l e :' . $ a v a i l a b l e V e r s i o n ) ; } } ? >
2/17/14
* / ? > < p > < s t r o n g > < f o n tc o l o r = " # F F 0 0 0 0 " > P l e a s eN o t e :A n yo r d e r sp l a c e db e t w e e nJ u l y 3 0 t ha n dA u g u s t7 t hw i l lo n l yb es h i p p e do nA u g u s t8 t h .W ea p o l o g i z ef o ra n y i n c o n v e n i e n c ea n dt h a n ky o uf o ry o u ro r d e r . < / f o n t > < / s t r o n g > < / p > < ? p h p / /d o n ' tf o r g e tt h i sl a s tb i t ,i te n d st h ei fs t a t e m e n t ! } ? >
up down 0 luck dot lil dot leprechaun at gmail dot com 4 years ago
T h i si sa ne a s i l ye x t e n d a b l ea n dp r e t t yw a yt oo u t p u th u m a n r e a d a b l ed a t e d i f f e r e n c e ss u c ha s" 1d a y2h o u r sa g o " ," 6m o n t h sa g o " ," 3y e a r s7m o n t h s1 4d a y s1 h o u r4m i n u t e s1 6s e c o n d s "e t ce t c . C h a n g e" $ l e v e l s=2 ; "t ow h a t e v e ry o uw a n t .Av a l u eo f1w i l ll i m i tt oo n l yo n e n u m b e ri nt h er e s u l t( " 3d a y sa g o " ) .Av a l u eo f3w o u l dr e s u l ti nu pt ot h r e e( " 3 d a y s1h o u r2m i n u t e sa g o " ) I tc a nb eu s e di nt h ef o l l o w i n gw a y s : e c h oc o m p a r e _ d a t e s ( $ s t a r t _ d a t e , $ e n d _ d a t e ) ; e c h oc o m p a r e _ d a t e s ( $ e n d _ d a t e , $ s t a r t _ d a t e ) ; e c h oc o m p a r e _ d a t e s ( $ s t a r t _ d a t e ) ;/ / e n dd a t ew i l lb ea s s u m e da st i m e ( ) ; < ? p h p f u n c t i o nc o m p a r e _ d a t e s ( $ d a t e 1 ,$ d a t e 2=t i m e ( ) ) { $ b l o c k s=a r r a y ( a r r a y ( ' n a m e ' = > ' y e a r ' , ' a m o u n t ' a r r a y ( ' n a m e ' = > ' m o n t h ' , ' a m o u n t ' a r r a y ( ' n a m e ' = > ' w e e k ' , ' a m o u n t ' a r r a y ( ' n a m e ' = > ' d a y ' , ' a m o u n t ' a r r a y ( ' n a m e ' = > ' h o u r ' , ' a m o u n t ' a r r a y ( ' n a m e ' = > ' m i n u t e ' , ' a m o u n t ' a r r a y ( ' n a m e ' = > ' s e c o n d ' , ' a m o u n t ' ) ; $ d i f f=a b s ( $ d a t e 1 $ d a t e 2 ) ; $ l e v e l s=2 ; $ c u r r e n t _ l e v e l=1 ;
www.php.net/manual/en/ref.datetime.php 8/27
6 0 * 6 0 * 2 4 * 3 6 5 6 0 * 6 0 * 2 4 * 3 1 6 0 * 6 0 * 2 4 * 7 6 0 * 6 0 * 2 4 6 0 * 6 0 6 0 1 ) ) , ) , ) ,
) , ) , ) ,
2/17/14
$ r e s u l t=a r r a y ( ) ; f o r e a c h ( $ b l o c k sa s$ b l o c k ) { i f( $ c u r r e n t _ l e v e l>$ l e v e l s ){ b r e a k ; } i f( $ d i f f / $ b l o c k [ ' a m o u n t ' ]> =1 ) { $ a m o u n t=f l o o r ( $ d i f f / $ b l o c k [ ' a m o u n t ' ] ) ; i f( $ a m o u n t > 1 ){ $ p l u r a l = ' s ' ; }e l s e{ $ p l u r a l = ' ' ; } $ r e s u l t [ ]=$ a m o u n t . '' . $ b l o c k [ ' n a m e ' ] . $ p l u r a l ; $ d i f f=$ a m o u n t * $ b l o c k [ ' a m o u n t ' ] ; $ c u r r e n t _ l e v e l + + ; } } r e t u r ni m p l o d e ( '' , $ r e s u l t ) . 'a g o ' ; } ? > [ E D I TB Yd a n b r o w nA Tp h pD O Tn e t :C o n t a i n sab u g f i xs u p p l i e db y( j o r g eA Td o n t s p a m D O Tc o m )o n2 2 O C T 2 0 0 9 . ]
2/17/14
F u n c t i o nD a t e D i f f ( $ d a t e 1 , $ d a t e 2 ){ $ t i m e d i f f e r e n c e = $ d a t e 2 $ d a t e 1 ; $ c o r r = d a t e ( " I " , $ d a t e 2 ) d a t e ( " I " , $ d a t e 1 ) ; $ t i m e d i f f e r e n c e + = $ c o r r ; r e t u r n$ t i m e d i f f e r e n c e ; } ? > E x a m p l e : < ? p h p $ d 1 = m k t i m e ( 2 , 0 , 0 , 1 0 , 2 8 , 2 0 0 7 ) ; $ d 2 = m k t i m e ( 4 , 0 , 0 , 1 0 , 2 8 , 2 0 0 7 ) ; $ p e r i o d = D a t e D i f f ( $ d 1 , $ d 2 ) ; p r i n t f ( " < b r > % s " , d a t e ( " Id . m . YH : i " , $ d 1 ) ) ; p r i n t f ( " < b r > % uh o u r " , $ p e r i o d / 3 6 0 0 ) ; p r i n t f ( " < b r > % s " , d a t e ( " Id . m . YH : i " , $ d 2 ) ) ; ? > G e t t i n g2h o u ri n s t e a d3 .
2/17/14
f o r e a c h( $ p e r i o d sa s$ p e r i o d= >$ s e c o n d s _ i n _ p e r i o d ){ i f( $ s e c o n d s> =$ s e c o n d s _ i n _ p e r i o d ){ $ d u r a t i o n s [ $ p e r i o d ]=f l o o r ( $ s e c o n d s/$ s e c o n d s _ i n _ p e r i o d ) ; $ s e c o n d s=$ d u r a t i o n s [ $ p e r i o d ]*$ s e c o n d s _ i n _ p e r i o d ; } } r e t u r n$ d u r a t i o n s ; } e c h of o r m a t _ d u r a t i o n ( 8 6 4 ) ; / * [ m i n u t e s ]= >1 4 [ s e c o n d s ]= >2 4 * / e c h of o r m a t _ d u r a t i o n ( 3 6 0 0 ) ; / * [ h o u r s ]= >1 * / e c h of o r m a t _ d u r a t i o n ( 1 1 1 1 1 1 1 1 ) ; / * [ m o n t h s ]= >4 [ d a y s ]= >6 [ h o u r s ]= >2 0 [ m i n u t e s ]= >2 8 [ s e c o n d s ]= >5 9 * / ? >
up down 0 Leopoldo A dot Oducado (poducado at comfsm dot fm) 7 years ago
H e r ei sm yf u n c t i o nt oc o u n tt h en u m b e rd a y s ,w e e k s ,m o n t h s ,a n dy e a r .It r i e di t b e l o w1 9 7 0a n di tw o r k s . < ? p h p
www.php.net/manual/en/ref.datetime.php 11/27
2/17/14
f u n c t i o nd a t e c a l ( $ d a t e , $ r e t u r n _ v a l u e ) { $ d a t e=e x p l o d e ( " / " ,$ d a t e ) ; $ m o n t h _ b e g i n=$ d a t e [ 0 ] ; $ m o n t h _ b e g i n _ d a t e=$ d a t e [ 1 ] ; $ y e a r 1=$ d a t e [ 2 ] ; $ m o n t h _ e n d=d a t e ( " n " ) ; $ m o n t h _ e n d _ d a t e=d a t e ( " j " ) ; $ y e a r 2=d a t e ( " Y " ) ; $ d a y s _ o l d=0 ; $ y e a r s _ o l d=0 ; $ m o n t h s _ o l d=0 ; i f ( $ m o n t h _ b e g i n = = 1 2 ) { $ m o n t h=1 ; $ y e a r=$ y e a r 1 + 1 ; } e l s e { $ m o n t h=$ m o n t h _ b e g i n + 1 ; $ y e a r=$ y e a r 1 ; } $ b e g i n _ p l u s _ d a y s=c a l _ d a y s _ i n _ m o n t h ( C A L _ G R E G O R I A N ,$ m o n t h _ b e g i n ,$ y e a r 1 )$ m o n t h _ b e g i n _ d a t e ; $ e n d _ m i n u s _ d a y s=c a l _ d a y s _ i n _ m o n t h ( C A L _ G R E G O R I A N ,$ m o n t h _ e n d ,$ y e a r 2 )$ m o n t h _ e n d _ d a t e ; w h i l e( $ y e a r< =$ y e a r 2 ) { i f ( $ y e a r= =$ y e a r 2 ) { $ d a y s _ o l d=$ d a y s _ o l d+c a l _ d a y s _ i n _ m o n t h ( C A L _ G R E G O R I A N ,$ m o n t h ,$ y e a r ) ; i f ( $ m o n t h<$ m o n t h _ e n d ) { $ m o n t h s _ o l d=$ m o n t h s _ o l d+1 ; $ m o n t h=$ m o n t h+1 ; } e l s e i f( $ m o n t h = = $ m o n t h _ e n da n d$ m o n t h _ e n d _ d a t e> =$ m o n t h _ b e g i n _ d a t e ) { $ y e a r=$ y e a r 2 + 1 ; } e l s e { $ y e a r=$ y e a r 2 + 1 ; } }
www.php.net/manual/en/ref.datetime.php 12/27
2/17/14
e l s e { $ d a y s _ o l d=$ d a y s _ o l d+c a l _ d a y s _ i n _ m o n t h ( C A L _ G R E G O R I A N ,$ m o n t h ,$ y e a r ) ; i f( $ m o n t h< =1 1 ) { $ m o n t h=$ m o n t h+1 ; $ m o n t h s _ o l d=$ m o n t h s _ o l d+1 ; } e l s e { $ m o n t h=1 ; $ y e a r=$ y e a r+1 ; $ m o n t h s _ o l d=$ m o n t h s _ o l d+1 ; } } } $ d a y s _ o l d=( $ d a y s _ o l d+$ b e g i n _ p l u s _ d a y s )-$ e n d _ m i n u s _ d a y s ; i f ( $ r e t u r n _ v a l u e= =" d " ) {r e t u r n$ d a y s _ o l d ;} e l s e i f( $ r e t u r n _ v a l u e= =" w " ) {r e t u r ni n t v a l ( $ d a y s _ o l d / 7 ) ;} e l s e i f( $ r e t u r n _ v a l u e= =" m " ) {r e t u r n$ m o n t h s _ o l d ;} e l s e i f( $ r e t u r n _ v a l u e= =" y " ) {r e t u r ni n t v a l ( $ m o n t h s _ o l d / 1 2 ) ;} } e c h od a t e c a l ( " 0 8 / 1 3 / 1 9 7 5 " , " m " ) ; ? >
2/17/14
w h i l e( t r u e ) { / /R e a dal i n ef r o ms t a n d a r di n . e c h o" e n t e rt i m et oc o n v e r t :" ; $ i n l i n e=f g e t s ( S T D I N ) ; $ i n l i n e=t r i m ( $ i n l i n e ) ; i f( $ i n l i n e= =" "| |$ i n l i n e= =" . " ) b r e a k ; / /S e ei ft h el i n ei sad a t e . $ p o s=s t r p o s ( $ i n l i n e ," / " ) ; i f( $ p o s= = =f a l s e ){ / /n o tad a t e ,s h o u l db ea ni n t e g e r . $ d a t e=d a t e ( " m / d / YG : i : s " ,$ i n l i n e ) ; e c h o" i n t 2 d a t e :$ i n l i n e>$ d a t e \ n " ; }e l s e{ $ i t i m e=s t r t o t i m e ( $ i n l i n e ) ; e c h o" d a t e 2 i n t :$ i n l i n e>$ i t i m e \ n " ; } } ? >
2/17/14
s w i t c h ( $ i n t e r v a l ){ c a s e" s " : / / s e c o n d s r e t u r n ( $ d i f ) ; c a s e" n " : / / m i n u t e s r e t u r n ( f l o o r ( $ d i f / 6 0 ) ) ;/ / 6 0 s = 1 m c a s e" h " : / / h o u r s r e t u r n ( f l o o r ( $ d i f / 3 6 0 0 ) ) ;/ / 3 6 0 0 s = 1 h c a s e" d " : / / d a y s r e t u r n ( f l o o r ( $ d i f / 8 6 4 0 0 ) ) ;/ / 8 6 4 0 0 s = 1 d c a s e" w w " : / / W e e k r e t u r n ( f l o o r ( $ d i f / 6 0 4 8 0 0 ) ) ;/ / 6 0 4 8 0 0 s = 1 w e e k = 1 s e m a n a c a s e" m " :/ / s i m i l a rr e s u l t" m "d a t e D i f fM i c r o s o f t $ m o n t h B e g i n = ( d a t e ( " Y " , $ d a t e T i m e B e g i n ) * 1 2 ) + d a t e ( " n " , $ d a t e T i m e B e g i n ) ; $ m o n t h E n d = ( d a t e ( " Y " , $ d a t e T i m e E n d ) * 1 2 ) + d a t e ( " n " , $ d a t e T i m e E n d ) ; $ m o n t h D i f f = $ m o n t h E n d $ m o n t h B e g i n ; r e t u r n ( $ m o n t h D i f f ) ; c a s e" y y y y " :/ / s i m i l a rr e s u l t" y y y y "d a t e D i f fM i c r o s o f t r e t u r n ( d a t e ( " Y " , $ d a t e T i m e E n d )-d a t e ( " Y " , $ d a t e T i m e B e g i n ) ) ; d e f a u l t : r e t u r n ( f l o o r ( $ d i f / 8 6 4 0 0 ) ) ;/ / 8 6 4 0 0 s = 1 d } } ? >
2/17/14
i f( $ r b e g i n<0| |$ r e n d<0 ) r e t u r n0 ; $ b e g i n=w o r k d a y ( $ r b e g i n ,T R U E ) ; $ e n d=w o r k d a y ( $ r e n d ,F A L S E ) ; i f( $ e n d<$ b e g i n ){ $ e n d=$ b e g i n ; $ b e g i n=$ e n d ; } $ d i f f t i m e=$ e n d-$ b e g i n ; $ d i f f d a y s=f l o o r ( $ d i f f t i m e/( 2 4*6 0*6 0 ) )+1 ; i f( $ d i f f d a y s<7 ){ $ a b e g i n=g e t d a t e ( $ r b e g i n ) ; $ a e n d=g e t d a t e ( $ r e n d ) ; i f( $ d i f f d a y s= =1& &( $ a s t a r t [ ' w d a y ' ]= =0| |$ a s t a r t [ ' w d a y ' ]= =6 )& & ( $ a e n d [ ' w d a y ' ]= =0| |$ a e n d [ ' w d a y ' ]= =6 ) ) r e t u r n0 ; $ a b e g i n=g e t d a t e ( $ b e g i n ) ; $ a e n d=g e t d a t e ( $ e n d ) ; $ w e e k e n d s=( $ a e n d [ ' w d a y ' ]<$ a b e g i n [ ' w d a y ' ] )?1:0 ; }e l s e $ w e e k e n d s=f l o o r ( $ d i f f d a y s/7 ) ; r e t u r n$ d i f f d a y s-( $ w e e k e n d s*2 ) ; } f u n c t i o nw o r k d a y ( $ d a t e ,$ b e g i n d a t e=T R U E ){ $ a d a t e=g e t d a t e ( $ d a t e ) ; $ d a y=2 4*6 0*6 0 ; i f( $ a d a t e [ ' w d a y ' ]= =0 )/ /S u n d a y $ d a t e+ =$ b e g i n d a t e?$ d a y:( $ d a y*2 ) ; e l s e i f( $ a d a t e [ ' w d a y ' ]= =6 )/ /S a t e r d a y $ d a t e+ =$ b e g i n d a t e?$ d a y*2:$ d a y ; r e t u r n$ d a t e ; } ? >
2/17/14
t h ea b i l i t yt os p l i tt h er e s u l tac o u p l ed i f f e r e n tw a y s .Ib u i l tt h i sf u n c t i o nt o s u f f i c ea n yd a t e d i f fn e e d sIh a d .H o p ei th e l p so t h e r st o o . < ? p h p / * * * * * * * * *d a t e D i f f ( )f u n c t i o n* * * * * * * * * * *r e t u r n sA r r a yo fI n tv a l u e sf o rd i f f e r e n c eb e t w e e nt w od a t e s *$ d a t e 1>$ d a t e 2>p o s i t i v ei n t e g e r sa r er e t u r n e d *$ d a t e 1<$ d a t e 2>n e g a t i v ei n t e g e r sa r er e t u r n e d * *$ s p l i tr e c o g n i z e st h ef o l l o w i n g : * * * * * *e x a m p l e s : * * * * * *a s s u m i n gd a t e D i f fr e t u r n e d8 5 3d a y s ,t h ea b o v e *e x a m p l e sw o u l dh a v eap r i n t _ ro u t p u to f : * * * * * *n o t e :[ h ]( h o u r s ) ,[ m ]( m i n u t e s ) ,[ s ]( s e c o n d s )a r ea l w a y sr e t u r n e da se l e m e n t s o ft h eA r r a y * / f u n c t i o nd a t e D i f f ( $ d t 1 ,$ d t 2 ,$ s p l i t = ' y w ' ){ $ d a t e 1=( s t r t o t i m e ( $ d t 1 )! =1 )?s t r t o t i m e ( $ d t 1 ):$ d t 1 ; $ d a t e 2=( s t r t o t i m e ( $ d t 2 )! =1 )?s t r t o t i m e ( $ d t 2 ):$ d t 2 ; $ d t D i f f=$ d a t e 1-$ d a t e 2 ; $ t o t a l D a y s=i n t v a l ( $ d t D i f f / ( 2 4 * 6 0 * 6 0 ) ) ; $ t o t a l S e c s=$ d t D i f f ( $ t o t a l D a y s * 2 4 * 6 0 * 6 0 ) ; $ d i f [ ' h ' ]=$ h=i n t v a l ( $ t o t a l S e c s / ( 6 0 * 6 0 ) ) ; $ d i f [ ' m ' ]=$ m=i n t v a l ( ( $ t o t a l S e c s ( $ h * 6 0 * 6 0 ) ) / 6 0 ) ; $ d i f [ ' s ' ]=$ t o t a l S e c s ( $ h * 6 0 * 6 0 ) ( $ m * 6 0 ) ; / /s e tu pa r r a ya sn e c e s s a r y s w i t c h ( $ s p l i t ){ c a s e' y w ' :#s p l i ty e a r s w e e k s d a y s $ d i f [ ' y ' ]=$ y=i n t v a l ( $ t o t a l D a y s / 3 6 5 ) ; $ d i f [ ' w ' ]=$ w=i n t v a l ( ( $ t o t a l D a y s ( $ y * 3 6 5 ) ) / 7 ) ;
www.php.net/manual/en/ref.datetime.php 17/27
$ d i f 1=d a t e D i f f ( )o rd a t e D i f f ( ' y w ' ) $ d i f 2=d a t e D i f f ( ' y ' ) $ d i f 3=d a t e D i f f ( ' w ' ) $ d i f 4=d a t e D i f f ( ' d ' )
2/17/14
$ d i f [ ' d ' ]=$ t o t a l D a y s ( $ y * 3 6 5 ) ( $ w * 7 ) ; b r e a k ; c a s e' y ' :#s p l i ty e a r s d a y s $ d i f [ ' y ' ]=$ y=i n t v a l ( $ t o t a l D a y s / 3 6 5 ) ; $ d i f [ ' d ' ]=$ t o t a l D a y s ( $ y * 3 6 5 ) ; b r e a k ; c a s e' w ' :#s p l i tw e e k s d a y s $ d i f [ ' w ' ]=$ w=i n t v a l ( $ t o t a l D a y s / 7 ) ; $ d i f [ ' d ' ]=$ t o t a l D a y s ( $ w * 7 ) ; b r e a k ; c a s e' d ' :#d o n ' ts p l i t-t o t a ld a y s $ d i f [ ' d ' ]=$ t o t a l D a y s ; b r e a k ; d e f a u l t : d i e ( " E r r o ri nd a t e D i f f ( ) .U n r e c o g n i z e d\ $ s p l i tp a r a m e t e r .V a l i dv a l u e sa r e ' y w ' ,' y ' ,' w ' ,' d ' .D e f a u l ti s' y w ' . " ) ; } r e t u r n$ d i f ; } ? >
2/17/14
k e y st ot h ea r r a ya r et h eU n i xt i m e s t a m pf o rm i d n i g h tf o re a c hd a t e . T h el o o p s t a r t sa tt h ef i r s tt i m e s t a m p ,t h e ni n c r e m e n t e db ya d d i n g8 6 4 0 0s e c o n d s( i e .6 0x6 0 x2 4 ) . H o w e v e r ,D a y l i g h tS a v i n gT i m et h r e wo f ft h ea c c u r a c yo ft h i sl o o p ,s i n c e c e r t a i nd a y sh a v ead u r a t i o no t h e rt h a n8 6 4 0 0s e c o n d s . Iw o r k e da r o u n di tb ya d d i n g ac o u p l eo fl i n e st of o r c et h et i m e s t a m pt om i d n i g h ta te a c hi n t e r v a l . < ? p h p $ O N E _ D A Y=9 0 0 0 0 ; l e s s f o r($ e a c h _ t i m e s t a m p=$ s t a r t _ t i m e;$ e a c h _ t i m e s t a m p< =$ e n d _ t i m e; $ e a c h _ t i m e s t a m p+ = $ O N E _ D A Y ){ / * f o r c em i d n i g h tt oc o m p e n s a t ef o rd a y l i g h ts a v i n gt i m e * / $ t h i s _ t i m e s t a m p _ a r r a y=g e t d a t e ($ e a c h _ t i m e s t a m p) ; $ e a c h _ t i m e s t a m p=m k t i m e(0,0,0,$ t h i s _ t i m e s t a m p _ a r r a y [ m o n ], $ t h i s _ t i m e s t a m p _ a r r a y [ m d a y ],$ t h i s _ t i m e s t a m p _ a r r a y [ y e a r ]) ; / /d os o m es t u f f . . . } ? > / /c a n ' tu s e8 6 4 0 0b e c a u s es o m ed a y sh a v eo n eh o u rm o r eo r
2/17/14
c a s e2 :/ /H o u r s $ d i f f e r e n c e _ h o u r s =r o u n d ( ( $ d i f f e r e n c e _ s e c o n d s/3 6 0 0 ) , 2 ) ; r e t u r n' a p p r o x .' . $ d i f f e r e n c e _ h o u r s . 'H o u r s ' ; b r e a k ; c a s e1 :/ /M i n u t e s $ d i f f e r e n c e _ m i n u t e s =r o u n d ( ( $ d i f f e r e n c e _ s e c o n d s/6 0 ) , 2 ) ; r e t u r n' a p p r o x .' . $ d i f f e r e n c e _ m i n u t e s . 'M i n u t e s ' ; b r e a k ; d e f a u l t :/ /S e c o n d s i f ( $ d i f f e r e n c e _ s e c o n d s>1 ) { r e t u r n$ d i f f e r e n c e _ s e c o n d s . 'S e c o n d s ' ; } e l s e { r e t u r n$ d i f f e r e n c e _ s e c o n d s . 'S e c o n d ' ; } } } ? >
2/17/14
< ? p h p / * weeknumber -/ / w e e k n u m b e rr e t u r n saw e e kn u m b e rf r o mag i v e nd a t e( > 1 9 7 0 ,< 2 0 3 0 ) W e d ,2 0 0 3 0 1 0 1i si nw e e k1 M o n ,2 0 0 3 0 1 0 6i si nw e e k2 W e d ,2 0 0 3 1 2 3 1i si nw e e k5 3 ,n e x ty e a r sf i r s tw e e k B ec a r e f u l ,t h e r ea r ey e a r sw i t h5 3w e e k s . / /-* / f u n c t i o nw e e k n u m b e r( $ y ,$ m ,$ d ){ $ w n=s t r f t i m e ( " % W " , m k t i m e ( 0 , 0 , 0 , $ m , $ d , $ y ) ) ; $ w n+ =0 ;#w nm i g h tb eas t r i n gv a l u e $ f i r s t d a y o f y e a r=g e t d a t e ( m k t i m e ( 0 , 0 , 0 , 1 , 1 , $ y ) ) ; i f( $ f i r s t d a y o f y e a r [ " w d a y " ]! =1 ) $ w n+ =1 ; r e t u r n( $ w n ) ; } #f u n c t i o nw e e k n u m b e r #i f1 / 1i sn o taM o n d a y ,a d d1
/ * datefromweek -/ / F r o maw e e k n u m b e r ,c a l c u l a t e st h ec o r r e s p o n d i n gd a t e I n p u t :Y e a r ,w e e k n u m b e ra n dd a yo f f s e t O u t p u t :E x a c td a t ei na na s s o c i a t i v e( n a m e d )a r r a y 2 0 0 3 ,1 2 ,0 :2 0 0 3 0 3 1 7( aM o n d a y ) 1 9 9 5 , 5 3 ,2 :1 9 9 5 1 2 x x . . . / /-* / f u n c t i o nd a t e f r o m w e e k( $ y ,$ w ,$ o ){ $ d a y s=( $ w-1 )*7+$ o ; $ f i r s t d a y o f y e a r=g e t d a t e ( m k t i m e ( 0 , 0 , 0 , 1 , 1 , $ y ) ) ; i f( $ f i r s t d a y o f y e a r [ " w d a y " ]= =0 )$ f i r s t d a y o f y e a r [ " w d a y " ]+ =7 ; #i ng e t d a t e ,S u n d a yi s0i n s t e a do f7 $ f i r s t m o n d a y=g e t d a t e ( m k t i m e ( 0 , 0 , 0 , 1 , 1 $ f i r s t d a y o f y e a r [ " w d a y " ] + 1 , $ y ) ) ; $ c a l c d a t e=g e t d a t e ( m k t i m e ( 0 , 0 , 0 , $ f i r s t m o n d a y [ " m o n " ] , $ f i r s t m o n d a y [ " m d a y " ] + $ d a y s , $ f i r s t m o n d a y [ " y e a r " ] ) ) ; $ d a t e [ " y e a r " ]=$ c a l c d a t e [ " y e a r " ] ; $ d a t e [ " m o n t h " ]=$ c a l c d a t e [ " m o n " ] ; $ d a t e [ " d a y " ]=$ c a l c d a t e [ " m d a y " ] ; r e t u r n( $ d a t e ) ;
www.php.net/manual/en/ref.datetime.php
21/27
2/17/14
} ? >
#f u n c t i o nd a t e f r o m w e e k
2/17/14
T h er e s u l tw i l ln e v e rb em o r et h a no n ew h o l ed a yi n a c c u r a t e ,a so p p o s e dt o m u l t i p l y i n gb y3 6 5 ,w h i c h ,o v e rm o r ey e a r s ,w i l lc r e a t eal a r g e ra n dl a r g e rd e f i c i t .
2/17/14
/ /t h i sw e e kn u m b e rw i l lc o m ef r o mt h et i m e s h a r ef o r m $ w e e k=5 1 ; $ t i m e s=g e t _ s t a r t _ a n d _ e n d _ d a t e _ f r o m _ w e e k ( $ w e e k ) ; $ s t a r t _ t i m e=$ t i m e s [ ' s t a r t _ t i m e s t a m p ' ] ; $ e n d _ t i m e=$ t i m e s [ ' e n d _ t i m e s t a m p ' ] ; f u n c t i o ng e t _ s t a r t _ a n d _ e n d _ d a t e _ f r o m _ w e e k( $ w ) { $ y=d a t e ( " Y " ,t i m e ( ) ) ; $ o=6 ;/ /w e e ks t a r t sf r o ms u n d a yb yd e f a u l t $ d a y s=( $ w-1 )*7+$ o ; $ f i r s t d a y o f y e a r=g e t d a t e ( m k t i m e ( 0 , 0 , 0 , 1 , 1 , $ y ) ) ; i f( $ f i r s t d a y o f y e a r [ " w d a y " ]= =0 )$ f i r s t d a y o f y e a r [ " w d a y " ]+ =7 ; #i ng e t d a t e ,S u n d a yi s0i n s t e a do f7 $ f i r s t m o n d a y=g e t d a t e ( m k t i m e ( 0 , 0 , 0 , 1 , 1 $ f i r s t d a y o f y e a r [ " w d a y " ] + 1 , $ y ) ) ; $ c a l c d a t e=g e t d a t e ( m k t i m e ( 0 , 0 , 0 , $ f i r s t m o n d a y [ " m o n " ] , $ f i r s t m o n d a y [ " m d a y " ] + $ d a y s , $ f i r s t m o n d a y [ " y e a r " ] ) ) ; $ s d a y=$ c a l c d a t e [ " m d a y " ] ; $ s m o n t h=$ c a l c d a t e [ " m o n " ] ; $ s y e a r=$ c a l c d a t e [ " y e a r " ] ;
2/17/14
t i m e ( 0 0 : 0 0 : 0 0 ) , d a t e ( 0 0 0 0 0 0 0 0 )a n dr e c o r d ( e n u m )w h i c ht e l l st h ea p pt h et y p eo fl o gs t o r e d .E G s t a r to re n do far e p o r t . S E L E C T ( T O _ D A Y S (` e n d ` . ` d a t e `)-T O _ D A Y S (` s t a r t ` . ` d a t e `) ) (s e c o n d (` e n d ` . ` t i m e `)+( m i n u t e (` e n d ` . ` t i m e `) * 6 0 )+( h o u r (` e n d ` . ` t i m e `) * 3 6 0 0 ) < s e c o n d (` s t a r t ` . ` t i m e `)+( m i n u t e (` s t a r t ` . ` t i m e `) * 6 0 )+( h o u r (` s t a r t ` . ` t i m e ` ) * 3 6 0 0 ) ) A S` d a y s `, S E C _ T O _ T I M E ( ( s e c o n d (` e n d ` . ` t i m e `)+( m i n u t e (` e n d ` . ` t i m e `) * 6 0 )+( h o u r (` e n d ` . ` t i m e `) * 3 6 0 0 ) ) ( s e c o n d (` s t a r t ` . ` t i m e `)+( m i n u t e (` s t a r t ` . ` t i m e `) * 6 0 )+( h o u r (` s t a r t ` . ` t i m e ` ) * 3 6 0 0 )) )A S` h m s ` , ` s t a r t ` . ` t i m e `a s` s t a r t ` , ` e n d ` . ` t i m e ` a s` e n d ` F R O M` r e p o r t _ t a b l e `A S` s t a r t `,` r e p o r t _ t a b l e `A S` e n d ` A N D` s t a r t ` . ` r e c o r d `=' R e p o r tB e g i n ' A N D` e n d ` . ` r e c o r d `=' R e p o r tE n d ' L I M I T1 I ft h e r ei sn oe n do fr e p o r tt h e ni tw i l ln o tr e t u r nar e s u l t ,a sy o uw o u l de x p e c t .
www.php.net/manual/en/ref.datetime.php
25/27
2/17/14
$ d i f f=m k t i m e ( 0 ,0 ,$ d i f f _ s e c s ,1 ,1 ,$ b a s e _ y e a r ) ; r e t u r na r r a y ( " y e a r s "= >d a t e ( " Y " ,$ d i f f )-$ b a s e _ y e a r , " m o n t h s _ t o t a l "= >( d a t e ( " Y " ,$ d i f f )-$ b a s e _ y e a r )*1 2+d a t e ( " n " ,$ d i f f )1 , " m o n t h s "= >d a t e ( " n " ,$ d i f f )-1 , " d a y s _ t o t a l "= >f l o o r ( $ d i f f _ s e c s/( 3 6 0 0*2 4 ) ) , " d a y s "= >d a t e ( " j " ,$ d i f f )-1 , " h o u r s _ t o t a l "= >f l o o r ( $ d i f f _ s e c s/3 6 0 0 ) , " h o u r s "= >d a t e ( " G " ,$ d i f f ) , " m i n u t e s _ t o t a l "= >f l o o r ( $ d i f f _ s e c s/6 0 ) , " m i n u t e s "= >( i n t )d a t e ( " i " ,$ d i f f ) , " s e c o n d s _ t o t a l "= >$ d i f f _ s e c s , " s e c o n d s "= >( i n t )d a t e ( " s " ,$ d i f f ) ) ; } $ a=d a t e _ d i f f ( " 2 0 0 6 1 1 0 1 " ," 2 0 0 7 1 1 0 1 " ) ; e c h o" < p r e > " ; p r i n t _ r ( $ a ) ; e c h o" < / p r e > " ; ? > T h i se x a m p l ew i l lo u t p u t( i fy o u rt i m e z o n eu s e sU SD S T ) : A r r a y ( [ y e a r s ]= >0 [ m o n t h s _ t o t a l ]= >1 1 [ m o n t h s ]= >1 1 [ d a y s _ t o t a l ]= >3 6 4 [ d a y s ]= >3 0 [ h o u r s _ t o t a l ]= >8 7 5 9 [ h o u r s ]= >2 3 [ m i n u t e s _ t o t a l ]= >5 2 5 5 4 0 [ m i n u t e s ]= >0 [ s e c o n d s _ t o t a l ]= >3 1 5 3 2 4 0 0 [ s e c o n d s ]= >0 ) A sy o uc a ns e e ,t h er e s u l ti sn o te x a c t l y1y e a r( l e s s1h o u r )s i n c eN o v1 ,2 0 0 6i s n o tD S Tw h i l eN o v1 ,2 0 0 7i sD S T . add a note
2/17/14
www.php.net/manual/en/ref.datetime.php
27/27