Base methods for generating calendars using JavaScript.
Supports IE 6+, Chrome 1+, Firefox 3+, Safari 4+.
npm install calendar-base
Or manually copy dist/calendar-base.min.js
to your project.
var Calendar = require('calendar-base').Calendar,
cal = new Calendar();
cal.getCalendar(2015, 0);
// Returns an Array with the calendar for January 2015.
Usage with AMD and global variables is available through dist/calendar-base.min.js
.
Check an online example or browse the examples
folder for some simple use cases.
Every returned day or date argument follows this notation:
{
day: 14,
month: 9,
year: 1986,
weekDay: 4,
selected: false,
siblingMonth: false,
weekNumber: 42
}
Properties month
and weekDay
respect JavaScript’s Date.prototype
.
Only day
, month
, and year
are necessary as input parameters for methods that require a date.
Constructor for a new calendar generator.
The object options
may have the following properties:
startDate
: current selected starting date (defaultundefined
)endDate
: current selected ending date (defaultundefined
)siblingMonths
: whether to include the previous and next months’ days before and after the current month when generating a calendar (defaultfalse
)weekNumbers
: whether to include the week number on each dayweekStart
: day of the week, respectsDate.prototype.getDay
(default0
, Sunday)
Returns the difference in days between dateOne
and dateTwo
as a Number
.
> Calendar.diff({ year: 2010, month: 0, day: 1 }, { year: 2010, month: 0, day: 10 });
-9
Returns the amount of days between dateOne
and dateTwo
as a Number
.
> Calendar.interval({ year: 2010, month: 0, day: 1 }, { year: 2010, month: 0, day: 10 });
10
Returns the amount of days in the given month as a Number
.
> Calendar.daysInMonth(2010, 0);
31
Returns whether the given year is a leap year, as a Boolean
.
> Calendar.isLeapYear(2100);
false
Returns the week number for the specified date.
> Calendar.calculateWeekNumber({year: 1986, month: 9, day: 14 });
42
Returns an Array
of dates with the days from the given month, always starting at the configured week day.
If sibling months is disabled, paddings are added as false
to align the week days, otherwise the respective days from the previous or next months are included.
> var cal = new Calendar({ siblingMonths: true });
> cal.getCalendar(2015, 5);
[ { day: 31, weekDay: 0, month: 4, year: 2015, siblingMonth: true },
{ day: 1, weekDay: 1, month: 5, year: 2015 },
{ day: 2, weekDay: 2, month: 5, year: 2015 },
...
{ day: 4, weekDay: 6, month: 6, year: 2015, siblingMonth: true } ]
Alias to Calendar.prototype.setStartDate
.
Sets the current selected starting date.
> cal.setStartDate({ year: 2015, month: 0, day: 1 });
Sets the current selected ending date.
> cal.setEndDate({ year: 2015, month: 0, day: 31 });
Checks wheter the given date is inside the selected dates interval, returns a Boolean
.
> cal.isDateSelected({ year: 2015, month: 0, day: 10 });
true
Week numbers are calculated based on the ISO 8601 standard, which assumes calculations based on weeks starting on Mondays. Be extra careful displaying the week number if your calendar doesn't start on a Monday.