11

I have a variable with the following value

$month = 201002; 

the first 4 numbers represent the year, and the last 2 numbers represent the month. I need to get the last 2 numbers in the month string name eg. Feb

My code looks like this

<?php echo date('M',substr($month,4,6)); ?>

I can I go about to obtain the month name

Elitmiar
  • 35,072
  • 73
  • 180
  • 229
  • possible duplicate of [PHP convert month-number to short month-name](http://stackoverflow.com/questions/4612012/php-convert-month-number-to-short-month-name) – T.Todua Jul 21 '14 at 13:45

6 Answers6

26

Append "01" and strtotime will be able to parse the string :

echo date('M', strtotime($month . '01'));
mexique1
  • 1,682
  • 11
  • 18
7

The second parameter of date is a timestamp. Use mktime to create one.

$month = 201002;
$monthNr = substr($month, -2, 2);

$timestamp = mktime(0, 0, 0, $monthNr, 1);
$monthName = date('M', $timestamp );
oliver31
  • 2,523
  • 3
  • 19
  • 25
  • The second parameter of `substr` is length, not end position. You can also seek from the end, using `substr($month, -2, 2)`. – nikc.org May 31 '10 at 12:08
  • Why would you say `2 = Jan`? It is not true. In this particular case it is true, but *only* because you create the timestamp for day 0, and not day 1, which means the last day of the previous month. `mktime(0, 0, 0, $monthNr, 1)` will create a timestamp for the 1st day of the month, current year. – nikc.org May 31 '10 at 13:06
1

This may help you..

  $month = substr($month, -2, 2);
  echo date('M', strtotime(date('Y-'. $month .'-d'))); 
Gaurav Porwal
  • 503
  • 3
  • 6
1

You can use the DateTime Class to get a Date data structure using date string and format. Then get a date string with any format like this:

$month = 201002; 
$date = DateTime::createFromFormat('Yd', $month);  
$monthName = $date->format('M'); // will get Month name
Hossam Ghareeb
  • 7,063
  • 3
  • 53
  • 64
0
$mydate = "201002";
date('M', mktime(0, 0, 0, substr($mydate, 4, 2), 1, 2000)); 
OlimilOops
  • 6,747
  • 6
  • 26
  • 36
-2

Being a programmer, and even knowing nothing of PHP data magic, I'd made it

$month = intval(substr($input_date,4,2));
$mons = explode(" ","Zer Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec");
echo $mons[$month]; 
HumbleLearner
  • 103
  • 2
  • 9
Your Common Sense
  • 156,878
  • 40
  • 214
  • 345