Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Calendar::Simple(3)   User Contributed Perl Documentation  Calendar::Simple(3)

       Calendar::Simple	- Perl extension to create simple calendars

	 use Calendar::Simple;

	 my @curr      = calendar;	       # get current month
	 my @this_sept = calendar(9);	       # get 9th month of current year
	 my @sept_2002 = calendar(9, 2002);    # get 9th month of 2002
	 my @monday    = calendar(9, 2002, 1); # get 9th month of 2002,
					       # weeks start on	Monday

	 my @span      = date_span(mon	 => 10,	 # returns span	of dates
				   year	 => 2006,
				   begin => 15,
				   end	 => 28);

       A very simple module that exports one function called "calendar".

       This function returns a data structure representing the dates in	a
       month.  The data	structure returned is an array of array	references.
       The first level array represents	the weeks in the month.	The second
       level array contains the	actual days. By	default, each week starts on a
       Sunday and the value in the array is the	date of	that day. Any days at
       the beginning of	the first week or the end of the last week that	are
       from the	previous or next month have the	value "undef".

       If the month or year parameters are omitted then	the current month or
       year are	assumed.

       A third,	optional parameter, start_day, allows you to set the day each
       week starts with, with the same values as localtime sets	for wday
       (namely,	0 for Sunday, 1	for Monday and so on).

       This function returns a cur-down	version	of a month data	structure
       which begins and	ends on	dates other than the first and last dates of
       the month.  Any weeks that fall completely outside of the date range
       are removed from	the structure and any days within the remaining	weeks
       that fall outside of the	date range are set to "undef".

       As there	are a number of	parameters to this function, they are passed
       using a named parameter interface. The parameters are as	follows:

	   The required	year. Defaults to the current year if omitted.

       mon The required	month. Defaults	to the current month if	omitted.

	   The first day of the	required span. Defaults	to the first if

       end The last day	of the required	span. Defaults to the last day of the
	   month if omitted.

	   Indicates the day of	the week that each week	starts with. This
	   takes the same values as the	optional third parameter to
	   "calendar". The default is 0	(for Sunday).

       This function isn't exported by default,	so in order to use it in your
       program you need	to use the module like this:

	 use Calendar::Simple 'date_span';

       A simple	"cal" replacement would	therefore look like this:

	 #!/usr/bin/perl -w

	 use strict;
	 use Calendar::Simple;

	 my @months = qw(January February March	April May June July August
			 September October November December);

	 my $mon = shift || (localtime)[4] + 1;
	 my $yr	 = shift || (localtime)[5] + 1900;

	 my @month = calendar($mon, $yr);

	 print "\n$months[$mon -1] $yr\n\n";
	 print "Su Mo Tu We Th Fr Sa\n";
	 foreach (@month) {
	   print map { $_ ? sprintf "%2d ", $_ : '   ' } @$_;
	   print "\n";

       A version of this example, called "pcal", is installed when you install
       this module.

   Date	Range
       This module will	make use of	if it is installed. By using it can use any date that DateTime can represent. If
       DateTime	is not installed it uses Perl's	built-in date handling and
       therefore can't deal with dates before 1970 and it will also have
       problems	with dates after 2038 on a 32-bit machine.


       Dave Cross <>

       With thanks to Paul Mison <> for the start day patch.

       Copyright (C) 2002-2008,	Magnum Solutions Ltd.  All Rights Reserved.

       This script is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

       perl, localtime,	DateTime

perl v5.32.1			  2021-02-28		   Calendar::Simple(3)


Want to link to this manual page? Use this URL:

home | help