Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : Date and Time Functions : getdate

getdate

Get date/time information (PHP 4, PHP 5)
array getdate ( [int timestamp] )

Example 449. getdate() example

<?php
$today
= getdate();
print_r($today);
?>

The above example will output something similar to:

Array
(
   [seconds] => 40
   [minutes] => 58
   [hours]   => 21
   [mday]    => 17
   [wday]    => 2
   [mon]     => 6
   [year]    => 2003
   [yday]    => 167
   [weekday] => Tuesday
   [month]   => June
   [0]       => 1055901520
)

Related Examples ( Source code ) » getdate
















Code Examples / Notes » getdate

intronis

When adding a timestamp to a database from php, be carefule because if your DB Server is a different computer than your webserver, the NOW() function in the SQL will use the DB Server's time, and not the web server's. You can use NTP to synch the times on both computers.

ih2

To do comparisons on dates stored in mysql db against 7 days ago, 1 month ago etc use the following:
$last_week = date("Y-m-d", mktime(0,0,0, date(m), date(d)-7,date(Y)));
if($date > $last_week)
{
etc.
This allows for intelligent looping i.e. works at start/end of month/year
I have noticed other postings re this and they have not worked for me.Hope this helps.


logan dot hall

It seems that 'yday' (the day of the year) that php produces is one less than what the unix 'date +%j' produces.
Not sure why this is, but I would guess that php uses 0-365 rather than 1-366 like unix does.  Just something to be careful of.


john sherwood

In response to the "Simple routine for determining whether a date in mySQL format has gone past":
function pastdate($t)
{
  if (strtotime($t) < time())
     return false;
  return true;
}
or you could use
mysql_select("SELECT UNIX_TIMESTAMP(fieldname) FROM tablename"), which would give you the date in seconds since unix epoch, and which you could compare to time().


yura pylypenko plyrvt

In addition to canby23 at ms19 post:
It's a very bad idea to consider day having 24 hours (86400 secs), because some days have 23, some - 25 hours due to daylight saving changes. Using of mkdate() and strtotime() is always preferred. strtotime() also has a very nice behaviour of datetime manipulations:
<?php
echo strtotime ("+1 day"), "\n";
echo strtotime ("+1 week"), "\n";
echo strtotime ("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime ("next Thursday"), "\n";
echo strtotime ("last Monday"), "\n";
?>


andre

I thought best to show a posseble way to go about bypassing the end month issue where the first day in a new month will have the monday of the week that it falls in - in the old month. Use the numbering of days as the constant and work you way from there.
Example:
<?php
//-----------------------------
$now = time();
$num = date("w");
if ($num == 0)
{ $sub = 6; }
else { $sub = ($num-1); }
$WeekMon  = mktime(0, 0, 0, date("m", $now)  , date("d", $now)-$sub, date("Y", $now)); //monday week begin calculation
$todayh = getdate($WeekMon); //monday week begin reconvert
$d = $todayh[mday];
$m = $todayh[mon];
$y = $todayh[year];
echo "$d-$m-$y"; //getdate converted day
?>
Allot less code makes everyone happy..


leo25in

getting weekday(actual date) from any give date.
function cal_date($wday,$tstamp)
{
return $tstamp-($wday*(24*3600));
}
function getweekday($m,$d,$y)
{
$tstamp=mktime(0,0,0,$m,$d,$y);

$Tdate = getdate($tstamp);

$wday=$Tdate["wday"];

switch($wday)
{
case 0;
$wstamp=cal_date($wday,$tstamp);
//echo date("Y-m-d",$wstamp);
break;

case 1;
$wstamp=cal_date($wday,$tstamp);
//echo date("Y-m-d",$wstamp);
break;


case 2;
$wstamp=cal_date($wday,$tstamp);
//echo date("Y-m-d",$wstamp);
break;

case 3;
$wstamp=cal_date($wday,$tstamp);
//echo date("Y-m-d",$wstamp);
break;

case 4;
$wstamp=cal_date($wday,$tstamp);
//echo date("Y-m-d",$wstamp);
break;

case 5;
$wstamp=cal_date($wday,$tstamp);
//echo date("Y-m-d",$wstamp);
break;

case 6;
$wstamp=cal_date($wday,$tstamp);
//echo date("Y-m-d",$wstamp);
break;
}


$w["day"]=date("d",$wstamp);
$w["month"]=date("m",$wstamp);
$w["year"]=date("Y",$wstamp);

return $w;
}


getisomonday $year, $week

getdate does not convert week numbers. this function relies on strftime to find a timestamp that falls on the monday of specified year and ISO week:
<?php function getisomonday($year, $week) {
       # check input
       $year = min ($year, 2038); $year = max ($year, 1970);
       $week = min ($week, 53); $week = max ($week, 1);
       # make a guess
       $monday = mktime (1,1,1,1,7*$week,$year);
       # count down to week
       while (strftime('%V', $monday) != $week)
               $monday -= 60*60*24*7;
       # count down to monday
       while (strftime('%u', $monday) != 1)
               $monday -= 60*60*24;
       # got it
       return $monday;
} ?>


liis make

function win2unix($date_string,$date_timestamp)
{
  $epoch_diff = 11644473600; // difference 1601<>1970 in seconds. see reference URL
  $date_timestamp = $date_timestamp * 0.0000001;
  $unix_timestamp = $date_timestamp - $epoch_diff;
  echo date($date_string,$unix_timestamp);    
}


nick reale

Anyone Interested in Generating dates for week, last week, month, last month, quarter, last quarter, YTD, Last YTD, Last Year can use this simple code.
It defaults to the date format YYYY-MM-DD but you can adjust it in the script.
<?
$t=getdate();

$today=date('Y-m-d',$t[0]);

//This Week//
$start=$t[0]-(86400*$t[wday]);
$twstart=date('Y-m-d',$start);

//Last Week//
$lwstart=$start-604800;
$lwend=$lwstart+518400;
$lwstart=date('Y-m-d',$lwstart);
$lwend=date('Y-m-d',$lwend);

//This Month//
$tmstart="$t[year]-$t[mon]-01";

//Last Month//
if($t[mon]=="1"){
$lmstart="2007-12-01";
}
else {
$lmstart="$t[year]-".($t[mon]-1)."-01";
}
$lmmonth=($t[mon]-1);
if($lmmonth=="4" OR $lmmonth=="5" OR $lmmonth=="9" OR $lmmonth=="11"){
$lmend="$t[year]-$lmmonth-30";
}
elseif($t[mon]=="2"){
$lmend="$t[year]-$lmmonth-28";
}
else {
$lmend="$t[year]-$lmmonth-31";
}

//This Quarter//
if($t[mon]=="1" OR $t[mon]=="2" OR $t[mon]=="3"){
$tqstart="$t[year]-01-01";
$tqend="$t[year]-03-31";
}
elseif($t[mon]=="4" OR $t[mon]=="5" OR $t[mon]=="6"){
$tqstart="$t[year]-04-01";
$tqend="$t[year]-06-30";
}
elseif($t[mon]=="7" OR $t[mon]=="8" OR $t[mon]=="9"){
$tqstart="$t[year]-07-01";
$tqend="$t[year]-09-30";
}
else {
$tqstart="$t[year]-10-01";
$tqend="$t[year]-12-31";
}

//Last Quarter//

if($t[mon]=="1" OR $t[mon]=="2" OR $t[mon]=="3"){
$lwstart=($t[year]-1)."-10-01";
$lwend=($t[year]-1)."-12-31";
}
elseif($t[mon]=="4" OR $t[mon]=="5" OR $t[mon]=="6") {
$lqstart="$t[year]-01-01";
$lqend="$t[year]-03-31";
}
elseif($t[mon]=="7" OR $t[mon]=="8" OR $t[mon]=="9"){
$lqstart="$t[year]-04-01";
$lqend="$t[year]-06-30";
}
else {
$lqstart="$t[year]-07-01";
$lqend="$t[year]-09-30";
}

//Year To Date//
$ystart="$t[year]-01-01";

//Last Year To Same Date//
$lystart=($t[year]-1)."-01-01";
$lytend=($t[0]-31536000);
$lytend=date('Y-m-d',$lytend);

//Last Year//
$lyend=($t[year]-1)."-12-31";



echo "This Week
Start $twstart
Finish $today
";
echo "Last Week
Start $lwstart
Finish $lwend
";
echo "This Month
Start $tmstart
Finish $today
";
echo "Last Month
Start $lmstart
Finish $lmend
";
echo "This Quarter
Start $tqstart
Finish $today
";
echo "Last Quarter
Start $lqstart
Finish $lqend
";
echo "Year To Date
Start $ystart
Finish $today
";
echo "Last Year To Date
Start $lystart
Finish $lytend
";
echo "Last Year
Start $lystart
Finish $lyend
";
?>


jared armstrong

A nice little function I wrote to determine what number occurrence weekday it is of the month for a given timestamp. (I.e. 2nd Friday, or the 3rd Thursday)
Eg: print_r(getWeekdayOccurrence(mktime(0, 0, 0, 12, 1, 2006)));
Outputs: Array ( [0] => 1 [1] => Friday )  [The first friday]
Eg. print_r(getWeekdayOccurrence(mktime(0, 0, 0, 8, 17, 2009)));
Outputs: Array ( [0] => 3 [1] => Monday ) [The third Monday]
function getWeekdayOccurrence($time) {
$month = intval(date("m", $time)); $day = intval(date("d", $time));
for ($i = 0; $i < 7; $i++) {
$days[] = date("l", mktime(0, 0, 0, $month, ($i+1), date("Y", $time)));
}
$posd  = array_search(date("l", $time), $days);
$posdm = array_search($days[0], $days) - $posd; /
return array((($day+$posdm+6)/7), $days[$posd]);
}


cas_at_nuy_dot_info

// This functions calculates the next date only using business days
// 2 parameters, the startdate and the number of businessdays to add
function calcduedate($datecalc,$duedays) {
$i = 1;
while ($i <= $duedays) {
$datecalc += 86400; // Add a day.
$date_info  = getdate( $datecalc );
if (($date_info["wday"] == 0) or ($date_info["wday"] == 6) )  {
$datecalc += 86400; // Add a day.
continue;
}
$i++;
}
return $datecalc ;
}


cesar

<?php
 /**
  *  This function is similar to getdate() but it returns
  * the month information.
  *
  *  Returns an associative array containing the month
  * information of the parameters, or the current month
  * if no parameters are given.
  *
  */
 function getmonth ($month = null, $year = null)
 {
     // The current month is used if none is supplied.
     if (is_null($month))
         $month = date('n');
     // The current year is used if none is supplied.
     if (is_null($year))
         $year = date('Y');
     // Verifying if the month exist
     if (!checkdate($month, 1, $year))
         return null;
     // Calculating the days of the month
     $first_of_month = mktime(0, 0, 0, $month, 1, $year);
     $days_in_month = date('t', $first_of_month);
     $last_of_month = mktime(0, 0, 0, $month, $days_in_month, $year);
     $m = array();
     $m['first_mday'] = 1;
     $m['first_wday'] = date('w', $first_of_month);
     $m['first_weekday'] = strftime('%A', $first_of_month);
     $m['first_yday'] = date('z', $first_of_month);
     $m['first_week'] = date('W', $first_of_month);
     $m['last_mday'] = $days_in_month;
     $m['last_wday'] = date('w', $last_of_month);
     $m['last_weekday'] = strftime('%A', $last_of_month);
     $m['last_yday'] = date('z', $last_of_month);
     $m['last_week'] = date('W', $last_of_month);
     $m['mon'] = $month;
     $m['month'] = strftime('%B', $first_of_month);
     $m['year'] = $year;
     return $m;
 }
 // Output
 print_r(getmonth(11, 1978));
 print_r(getmonth());
?>


Change Language


Follow Navioo On Twitter
checkdate
date_create
date_date_set
date_default_timezone_get
date_default_timezone_set
date_format
date_isodate_set
date_modify
date_offset_get
date_parse
date_sun_info
date_sunrise
date_sunset
date_time_set
date_timezone_get
date_timezone_set
date
getdate
gettimeofday
gmdate
gmmktime
gmstrftime
idate
localtime
microtime
mktime
strftime
strptime
strtotime
time
timezone_abbreviations_list
timezone_identifiers_list
timezone_name_from_abbr
timezone_name_get
timezone_offset_get
timezone_open
timezone_transitions_get
eXTReMe Tracker