jsdate

jsdate.js adds a format function to the javascript date object that works like PHP date().  I created it because I routinely rewrite many of the functions in it like 12-hour date formatting every time I need date formatting in javascript and wanted a more general way to format dates. Since I frequently work with both javascript and PHP together and the PHP date formatting is pretty comprehensive, I decided to make those formatting options available to javascript.

jsdate.js implements all of the PHP date formats except for timezone names and daylight savings, which I don't believe are possible to get out of a javascript object (If you know otherwise, please correct me!)  For ease of reference, the relevant bits of the PHP manual page are duplicated at the bottom of the page, as well as in the full (non-minified) version of the file itself.

Feel free to modify, add, and remove code, but please keep the attributions intact.  You may use jsdate on your commercial sites, just don't sell the file itself, please.  If you've got a better implementation of something, please let me know and I'll put it in!

Download jsdate

GitHub

Using jsdate.js

To use jsdate, include it in your file and create a date object.  Then call .format() on the date object with any combination of the formats that it implements (see the next section or refer to the PHP manual page) plus any other characters that you need.

var dateObj = new Date();
var formatStr = 'F jS, Y'; // prints out as "January 11th, 2010"
var formattedDate = dateObj.format(formatStr);

Note that the above example uses spaces and a comma in addition to the formatting letters.  You may also use other alphabetical characters, but if you need to use one of the letters reserved for a format you'll need to escape it with backslashes ('\\').  To use an actual backslash character, use 4 backslashes.  Unfortunately this is much more awkward in javascript than in PHP, where you can prevent it from interpreting things like \n, I'm trying to think of a better way to do it.

var dateObj = new Date();
var formatStr = 'l, \\t\\h\\e jS \\o\\f F, Y'; // prints out as "Monday, the 11th of January, 2010"
var formattedDate = dateObj.format(formatStr);

Formats that jsdate implements

Day --- ---
d Day of the month, 2 digits with leading zeros 01 to 31
D A textual representation of a day, three letters Mon through Sun
j Day of the month without leading zeros 1 to 31
l (lowercase 'L') A full textual representation of the day of the week Sunday through Saturday
N ISO-8601 numeric representation of the day of the week (added in PHP 5.1.0) 1 (for Monday) through 7 (for Sunday)
S English ordinal suffix for the day of the month, 2 characters st, nd, rd or th. Works well with j
w Numeric representation of the day of the week 0 (for Sunday) through 6 (for Saturday)
z The day of the year (starting from 0) 0 through 365
Week --- ---
W ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) Example: 42 (the 42nd week in the year)
Month --- ---
F A full textual representation of a month, such as January or March January through December
m Numeric representation of a month, with leading zeros 01 through 12
M A short textual representation of a month, three letters Jan through Dec
n Numeric representation of a month, without leading zeros 1 through 12
t Number of days in the given month 28 through 31
Year --- ---
L Whether it's a leap year 1 if it is a leap year, 0 otherwise.
o ISO-8601 year number. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead. (added in PHP 5.1.0) Examples: 1999 or 2003
Y A full numeric representation of a year, 4 digits Examples: 1999 or 2003
y A two digit representation of a year Examples: 99 or 03
Time --- ---
a Lowercase Ante meridiem and Post meridiem am or pm
A Uppercase Ante meridiem and Post meridiem AM or PM
B Swatch Internet time 000 through 999
g 12-hour format of an hour without leading zeros 1 through 12
G 24-hour format of an hour without leading zeros 0 through 23
h 12-hour format of an hour with leading zeros 01 through 12
H 24-hour format of an hour with leading zeros 00 through 23
i Minutes with leading zeros 00 to 59
s Seconds, with leading zeros 00 through 59
u Microseconds (added in PHP 5.2.2) Example: 654321
Timezone --- ---
O Difference to Greenwich time (GMT) in hours Example: +0200
P Difference to Greenwich time (GMT) with colon between hours and minutes (added in PHP 5.1.3) Example: +02:00
Z Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive. -43200 through 50400
Full Date/Time --- ---
c ISO 8601 date (added in PHP 5) 2004-02-12T15:19:21+00:00
r » RFC 2822 formatted date Example: Thu, 21 Dec 2000 16:01:07 +0200
U Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) See also time()