x
 
Create New Page

Revision: Dates Explained

Revision from: 10:17, 7 Jun 2007

To understand how dates are used in EE and how to handle when writing modules there is help here:
* http://expressionengine.com/docs/development/usage/localization.html

And to help understand what is going on, I wrote this little template to help me:

<h1>Test of various time/date functions:</h1>

<
h3>Server</h3>
PHP date: <?php echo date('dMy h:i');?>(echo date('dMy h:i');)<br>
PHP gmdate: <?php echo gmdate('dMy h:i');?>(echo gmdate('dMy h:i');)<br>

<
h3>Database dates(GMT/UTC)</h3>
LOC now: <?php global $LOC; echo 'held in db as '.$LOC->now; echo ' which is '.date('dMy h:i',$LOC->now); ?> (date('dMy h:i',$LOC->now);)<br>

<
h3>User</h3>
Users timezone: <?php global $SESS; echo $SESS->userdata['timezone'] ; ?> ($SESS->userdata['timezone'])<br>
Users Time:<?php global $LOC; echo $LOC->set_human_time(); ?> ($LOC->set_human_time();)<br>


Which will output something like:

Test of various time/date functions:

Server
PHP date
: 24Feb06 08:13(echo date('dMy h:i');)
PHP gmdate: 24Feb06 04:13(echo gmdate('dMy h:i');)

Database dates(GMT/UTC)
LOC now: held in db as 1140826385 which is 24Feb06 04:13 (date('dMy h:i',$LOC->now);)

User
Users timezone
: UP1 ($SESS->userdata['timezone'])
Users Time:2006-02-24 17:13 ($LOC->set_human_time();)

Query that returns days since entry date:

select entry_date,round((unix_timestamp()-entry_date)/60/60/24) days_old from exp_weblog_titles

And another example, this time php code:

$dt='2006-30-3 15:00';
echo
'server now:'.date("dMy H:i")."\n";
echo
'gmt '.gmdate('dMy H:i')."\n";
echo
'local time now: '. $LOC->set_human_time( $LOC->now)."\n";
echo
'localised offset: '.round($LOC->set_localized_offset()/3600)." hours\n";
echo
'----'."\n";
echo
'as input: '.$dt."\n";
echo
'is in daylight saving? '.date('I',$dt)."\n";
echo
'input to gmt: '.$LOC->set_human_time($LOC->convert_human_date_to_gmt($dt)+ $LOC->set_localized_offset())."\n";

which outputs:

server now:01Mar06 14:11
gmt 01Mar06 22
:11
local time now
: 2006-03-02 02:11
localised offset
: -12 hours
----
as
input: 2006-30-3 15:00
is in daylight saving
? 0
input to gmt
: 2008-06-03 03:00

Note that server is 8 hours behine GMT and local time is 4 hours ahead of GMT and daylight saving does not apply.
Category:Dates

Categories: