Space Cat, Prince Among Thieves


SimpleCalendar is a very simple PHP calendar class written to be easy to use and flexible.

It includes basic event logic and is made to be modified to your particular needs.

Sample Usage

$calendar = new donatj\SimpleCalendar();


$calendar->addDailyHtml( 'Sample Event', 'today', 'tomorrow' );

Example Calendar

Sample Event
Sample Event

Click here for the Github repository.

Recent Activity

GitHub (web-flow)

Merge pull request #13 from donatj/donatj-patch-1

Update .travis.yml
Update .travis.yml

Merge pull request #11 from donatj/donatj-patch-1

Update .travis.yml
Update .travis.yml
Update .travis.yml

Create .editorconfig

Jesse Donat (donatj)

Adds coverage badge

Merge branch 'keesiemeijer-master'
Adds a second regression test for mismatched tr’s
Adds simple regression test

Kees Meijer ()

fix opening TR issue

Jesse Donat (donatj)

Cleaner mddoc definition

More readable docs
mddoc rejiggering

GitHub (web-flow)

Update badge to SVG

Jesse Donat (donatj)

Adds a simple fix for trailing TRs
Adds a unit test for weeks starting on Friday
Adds Build Status badge
Allow HHVM to fail
Adds .travis.yml
Adds initial test suite
Adds oh-unit as a dev dependency

Update docs

underscores to camel case

Badges added

Unessessary initialization removed
notice prevention

gitignore updates
 Merge branch 'keesiemeijer-master'
 gitignore updates
 Simplified shrimp2ts work
Minor changes to enable selection of the previous/next months
First release by Trialog: add translation to French and improve rendering
 Merge pull request #2 from inod/patch-1

Added year check for today date
 Slight example cleanup
 Added the much requested ability to offset by days!
Fixed a nesting issue
Fixed a problem with the composer JSON
PSR-0, Composer
First tag in a long time, maintence build
Initial Release

Comment by: Joko Wandiro on

good PHP Class, very help me.
thanks a ton.

Comment by: joagido on

joagido Gravatarwhat to do to start weeks on monday?

Comment by: Greg Duckworth on

Greg Duckworth GravatarThis is a fantastic little script, although I don't suppose you could add the ability to move forward and back in months ?

Comment by: Jesse G. Donat on

Jesse G. Donat Gravatar

The constructor on Simple Calendar takes a date string (see strtotime()) so an easy way is simply

$cal = new SimpleCalendar('+1 Month');


$cal = new SimpleCalendar('June 2012');

There is also a setDate method which allows you to change the date of the calendar after initial construction.

Comment by: Greg Duckworth on

Greg Duckworth GravatarThanks, have it all working now.

Kudos again on the script!

Comment by: HvToor on

HvToor GravatarIt looks great but when I download v0.3.2 and upload it to my website it won't work. I already changed the paths of the files to the right folder.

Hope you can help with it,

Comment by: Jesse G. Donat on

Jesse G. Donat GravatarStarting with .3.0 it is namespaced and requires PHP 5.3+, I'm sorry I did not update the documentation until just now. The example in the source code better illustrates this.

Comment by: Dirk on

Dirk GravatarAs somebody already asked: Is there a simple way to make weeks start on mondays?

Thx in advance

Comment by: Vincent on

Vincent GravatarHow to change the first day of the week is detailed in the 'sample usage'...

Comment by: Dirk on

Dirk Gravatar$calendar->setStartOfWeek('Sunday');

works perfectly.

Thanks for the update! :)

Comment by: Alberto on

Alberto Gravatari keep getting the following notice Undefined offset: 1 to 31

"Notice: Undefined offset: 1 in SimpleCalendar.php on line 150"

Comment by: murali on

murali GravatarI used this calendar script in my website. I need to have the extended dates of next month and previous month in the current month. Please help me to do it in this calendar script. I would appreciate any help on this.


Comment by: Guilherme on

Guilherme GravatarNICE !!! VERY NICE CLASS !

To change the header,

Sun Mon Tue Wed Thu Fri Sat

To other languages ? what should i do ?



Comment by: Brad Haizlett on

Brad Haizlett GravatarIs there any way to enable previous and next month functionality on it? That would be awesome if you had that, or at least a way to have that working.

Comment by: Jesse G. Donat on

Jesse G. Donat GravatarDo you mean just rendering the next/previous month? That's as simple as:
$calendar = new donatj\SimpleCalendar();

$calendar->setDate('last month');

$calendar->setDate('next month');
If you mean button's for next/previous month, thats outside the scope. This is just a little widget to render a calendar. You can write JavaScript or PHP to do it yourself though without too much trouble.

Comment by: Mike on

Mike GravatarAny chance to provide code to display weekly view

Comment by: Peter on

Peter GravatarGood class! Thank you.

One question, regarding this line:

$out .= "\n" . ($i != $count ? '' : '');

Why did you check ($i != $count?)

In this way, one TR - start is missed.


Comment by: Anthony on

Anthony GravatarConcerning buttons for next/previous months. I understand you said its outside the scope but it would be really helpful if you could help out with it as its a bit cumbersome when trying to figure out the correct code to do it.

If you have update please put it out there.

Comment by: kalle on

kalle GravatarHow do you make the calendar show current week only?

Comment by: kalle on

kalle GravatarI also get this error when downloaded the latest version.

Parse error: syntax error, unexpected T_STRING in C:\wamp\www\calendar\donatj\SimpleCalendar.php on line 3

Comment by: Greg on

Greg GravatarAny way to make it so you can click on a day and have it call a function to set an event for that day?

Comment by: Chris Yates on

Chris Yates GravatarCracking little calendar nice & simple ...
I've incorporated this in a pretty complex ERP system and it works great and is easy to expand on

Comment by: Jose Vivas on

Jose Vivas GravatarCan you fill in the blanks with the dates of the previous month and the following month?

Comment by: rassloff on

rassloff Gravatarthanks for sharing.

Email address will never be publicly visible.

See my Tweet about comment formatting.