Get day of month php

Today's date is 27-01-2014 so I got day name using following function:

$t=date('d-m-Y');
$day = strtolower(date("D",strtotime($t)));

So now the day name is mon.

How to find that this Monday is the forth Monday of current month? In other words, I am trying to find the 1st, 2nd, 3rd, 4th of a particular day (eg. Monday) of a month?

asked Jan 27, 2014 at 9:58

Get day of month php

DS9DS9

2,8734 gold badges49 silver badges100 bronze badges

7

Credit for the Math part goes to Jon (above)

In combination with your code, full solution can be implemented as follows

$t=date('d-m-Y');
$dayName = strtolower(date("D",strtotime($t)));
$dayNum = strtolower(date("d",strtotime($t)));
echo floor(($dayNum - 1) / 7) + 1

or else as a function with optional date

PHP Fiddle here

This just return the number you are requesting.

function dayNumber($date=''){
    if($date==''){
        $t=date('d-m-Y');
    } else {
        $t=date('d-m-Y',strtotime($date));
    }

    $dayName = strtolower(date("D",strtotime($t)));
    $dayNum = strtolower(date("d",strtotime($t)));
    $return = floor(($dayNum - 1) / 7) + 1;
    return $return;
}


echo dayNumber('2014-01-27');

answered Jan 27, 2014 at 10:36

Oliver M GrechOliver M Grech

2,9251 gold badge19 silver badges34 bronze badges

2

$date = mktime(0, 0, 0, 1, 27, 2014);
$dayNumber = date("d", $date);
$dayOfWeek = date("l", $date);
$dayPosition = (floor(($dayNumber - 1) / 7) + 1);

switch ($dayPosition) {
    case 1:
        $suffix = 'st';
        break;
    case 2:
        $suffix = 'nd';
        break;
    case 3:
        $suffix = 'rd';
        break;
    default:
        $suffix = 'th';
}

echo "Today is the " . $dayPosition . $suffix . " " . $dayOfWeek . " of the month.";
// Will echo: Today is the 4th Monday of the month.

Thanks to @Jon for the maths.

answered Jan 27, 2014 at 10:36

Get day of month php

MrUpsidownMrUpsidown

20.8k12 gold badges69 silver badges125 bronze badges

3

Some improvements over the existing answers.

Current day of the week, simply:

echo date("N", time());

Day of the week for a given date:

//$date in d-m-Y, modify for your needs
function dayNumber($date = null)     
{
    $date = $date ?? date('d-m-Y');
    $date = DateTime::createFromFormat('d-m-Y', $date);
    return $date->format("N");
}


echo dayNumber('24-12-2020');

I'm using null coalescing operator (PHP 7.0 and up) and DateTime class and function (PHP 5.3.0 and up).

I would avoid using strtotime() because of the potential time zone issues.

answered Dec 14, 2020 at 14:02

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

cal_days_in_monthReturn the number of days in a month for a given year and calendar

Description

cal_days_in_month(int $calendar, int $month, int $year): int

Parameters

calendar

Calendar to use for calculation

month

Month in the selected calendar

year

Year in the selected calendar

Return Values

The length in days of the selected month in the given calendar

Examples

Example #1 cal_days_in_month() example

$number cal_days_in_month(CAL_GREGORIAN82003); // 31
echo "There were {$number} days in August 2003";
?>

brian at b5media dot com

14 years ago

Remember if you just want the days in the current month, use the date function:
$days = date("t");

dbindel at austin dot rr dot com

18 years ago

Here's a one-line function I just wrote to find the numbers of days in a month that doesn't depend on any other functions.

The reason I made this is because I just found out I forgot to compile PHP with support for calendars, and a class I'm writing for my website's open source section was broken. So rather than recompiling PHP (which I will get around to tomorrow I guess), I just wrote this function which should work just as well, and will always work without the requirement of PHP's calendar extension or any other PHP functions for that matter.

I learned the days of the month using the old knuckle & inbetween knuckle method, so that should explain the mod 7 part. :)

/*
* days_in_month($month, $year)
* Returns the number of days in a given month and year, taking into account leap years.
*
* $month: numeric month (integers 1-12)
* $year: numeric year (any integer)
*
* Prec: $month is an integer between 1 and 12, inclusive, and $year is an integer.
* Post: none
*/
// corrected by ben at sparkyb dot net
function days_in_month($month, $year)
{
// calculate number of days in a month
return $month == 2 ? ($year % 4 ? 28 : ($year % 100 ? 29 : ($year % 400 ? 28 : 29))) : (($month - 1) % 7 % 2 ? 30 : 31);
}
?>

Enjoy,
David Bindel

datlx at yahoo dot com

21 days ago

function lastDayOfMonth(string $time, int $deltaMonth, string $format = 'Y-m-d')
{
    try {
        $year = date('Y', strtotime($time));
        $month = date('m', strtotime($time));

        $increaYear = floor(($deltaMonth + $month - 1) / 12);

        $year += $increaYear;
        $month = (($deltaMonth + $month) % 12) ?: 12;
        $day = cal_days_in_month(CAL_GREGORIAN, $month, $year);

        return $time . ' + ' . $deltaMonth . ' => ' . date($format, strtotime($year . '-' . $month . '-' . $day)) . "\n";
    } catch (Exception $e) {
        throw $e;
    }
}

jeffbeall at comcast dot net

18 years ago

This will work great in future dates but will give the wrong answer for dates before 1550 (approx) when leap year was introduced and the calendar lost a year or two.
Sorry now to be more specific it has been a while sine I had to account for those later dates and had to take that into account but just a heads up for others to watch out.

geko45pj at yahoo dot com

15 years ago

# PHP Calendar (version 2.3), written by Keith Devensfunction generate_calendar($year, $month, $days = array(), $day_name_length = 3, $month_href = NULL, $first_day = 0, $pn = array()){
   
$first_of_month = gmmktime(0,0,0,$month,1,$year);#remember that mktime will automatically correct if invalid dates are entered
    # for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998
    # this provides a built in "rounding" feature to generate_calendar()
$day_names = array(); #generate all the day names according to the current locale
   
for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) #January 4, 1970 was a Sunday
       
$day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day namelist($month, $year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month));
   
$weekday = ($weekday + 7 - $first_day) % 7; #adjust for $first_day
   
$title   = htmlentities(ucfirst($month_name)).' '.$year#note that some locales don't capitalize month and day names

    #Begin calendar. Uses a real

. See http://diveintomark.org/archives/2002/07/03

@list($p, $pl) = each($pn); @list($n, $nl) = each($pn); #previous and next links, if applicable
   
if($p) $p = ''.($pl ? ''.$p.'' : $p).' ';
    if(
$n) $n = '.($nl ? ''.$n.'' : $n).'';
   
$calendar = ''."\n".
       
'\n";

    if(

$day_name_length){ #if the day names should be shown ($day_name_length > 0)
        #if day_name_length is >3, the full name of the day will be printed
       
foreach($day_names as $d)
           
$calendar .= '';
       
$calendar .= "\n";
    }

    if(

$weekday > 0) $calendar .= ''; #initial 'empty' days
   
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++){
        if(
$weekday == 7){
           
$weekday   = 0; #start a new week
           
$calendar .= "\n";
        }
        if(isset(
$days[$day]) and is_array($days[$day])){
            @list(
$link, $classes, $content) = $days[$day];
            if(
is_null($content))  $content  = $day;
           
$calendar .= '.($classes ? ' class="'.htmlspecialchars($classes).'">' : '>').
                (
$link ? ''.$content.''
: $content).'';
        }
        else
$calendar .= "";
    }
    if(
$weekday != 7) $calendar .= ''; #remaining "empty" daysreturn $calendar."\n
'.$p.($month_href ? ''.$title.'' : $title).$n."
'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'
 
$day 
\n"
;
}
echo
generate_calendar(2010, 12, 16,3,NULL,0,15, $first_of_month, $day_names, $day_names[$n]);
#echo generate_calendar($year, $month, $days,$day_name_length,$month_href,$first_day,$pn);
?>

How do I get the last day of the current month in PHP?

$date = strtotime ( $datestring ); // Last date of current month. $day = date ( "l" , $lastdate );

How can get first and last day of month in PHP?

php $dt = "2008-02-23"; echo 'First day : '. date("Y-m-01", strtotime($dt)). ' - Last day : '. date("Y-m-t", strtotime($dt)); ?>

How do you calculate current days in month?

To get the number of days in the current month: function getDaysInCurrentMonth() { const date = new Date(); return new Date( date. getFullYear(), date. getMonth() + 1, 0 ). getDate(); } const result = getDaysInCurrentMonth(); console.

What is Cal_gregorian in PHP?

Description ¶ The names of the different calendars which can be used as calendar are as follows: 0 or CAL_GREGORIAN - Gregorian Calendar. 1 or CAL_JULIAN - Julian Calendar. 2 or CAL_JEWISH - Jewish Calendar.