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 ...

Get Facebook Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.