O'Reilly logo

Facebook Cookbook by Jay Goldman

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Formatting Relative Time

Problem

I want to display time formatted and converted to my users’ local time zones.

Solution

Use the fb:time tag. The simplest form is:

<fb:time t="212698800" />

If that doesn’t look like a date and time to you, read on to the Discussion.

Discussion

The tricky part here is that you have to pass in t in what’s known as “epoch seconds,” or the number of seconds that have elapsed since the Unix Epoch, which was January 1, 1970. You think I’m making this up? You couldn’t make this stuff up! No one would believe you. (See http://en.wikipedia.org/wiki/Unix_epoch for more information on why we use this seemingly bizarre method of encoding a date and time.) You might find yourself wondering how you’re going to calculate that without doing a whole bunch of counting and skipping leap years and remembering that 30 days hath September, April, June, and November. Easy! To display the current time, just take advantage of the PHP time() function (or an equivalent in your language of choice):

<fb:time t="<?php echo time();?>" />

To display a different time, use the PHP mktime() function, which generates the epoch seconds for any given date:

<fb:time t="<?php echo mktime(17, 35, 0, 4, 26, 2008);?>" />

The parameters, in order, are hours, minutes, seconds, month, day, and year. More info is at http://www.php.net/manual/en/function.mktime.php.

Note that fb:time makes the time display relative, so if t is on the same day as today, you’ll just get the time (e.g., 5:35 p.m.); if it’s in ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required