views:

225

answers:

5

How do I get the day (1-7) from a Unix timestamp in PHP? I also need the day date (1-31) and month (1-12).

+4  A: 

see http://docs.php.net/getdate

e.g.

$ts = time(); // could be any timestamp
$d=getdate($ts);

echo 'day of the week: ', $d['wday'], "\n";
echo 'day of the month: ', $d['mday'], "\n";
echo 'month: ', $d['mon'], "\n";
VolkerK
+4  A: 

You can use date() function

$weekday = date('N', $timestamp); // 1-7
$month = date('m', $timestamp); // 1-12
$day = date('d', $timestamp); // 1-31
marvin
This undoubtedly works. But date() has to calculate the actual date three times just to pick one element each time. If you need all three values anyway, isn't that a bit suboptimal?
chendral
you can always use date('N.m.d etc.') at the same time for your purposes, i just gave the examples seperately to answer the question.
marvin
+3  A: 

It's the date() function you're after.

You can get more details from the PHP manual but in a nutshell here are the functions you need.

date('N', $timestamp);
//numeric representation of the day of the week

date('j', $timestamp);
//Day of the month without leading zeros

date('n', $timestamp);
//Numeric representation of a month, without leading zeros
Dyllon
+1  A: 

Use the date function as stated before, with your $timestamp as the second argument:

$weekday = date('N', $timestamp); // 1 = Monday to 7 = Sunday
$month = date('m', $timestamp); // 1-12 = Jan-Dec
$day = date('d', $timestamp); // 1-31, day of the month

Not all PHP versions play nice with negative timestamps. My experience is that timestamps dating back to before the UNIX epoch fare better with the new DateTime object.

dyve
+2  A: 
print "Week".date('N')."\n";
print "day of month " .date('d')."\n";
print "month ".date('m')."\n";
muruga