Subject: ANNOUNCE: Date::Manip-5.32
From: [email-masked] (Sullivan N. Beck)
Date: 28 Aug 1998 14:58:24 GMT
Newsgroups: comp.lang.perl.announce,comp.lang.perl.modules

This is to announce the release of Date::Manip 5.32.  I just uploaded it to
CPAN, so it should be available within a day or two from the CPAN site nearest
you.

>From the README file:

Notes for version 5.32:
  Mainly a bug fix release.
  Added Polish and Dutch support.
  *** Changed .DateManip.cnf to Manip.cnf (to get rid of problems on OS's
     that insist on 8.3 filenames) for all non-Unix platforms (Wintel, VMS,
     Mac).  For all Unix platforms, it's still .DateManip.cnf .  It will only
     look in the user's home directory on VMS and Unix.
  Added "in N days" and "N days ago" parse formats.
  Added "N days/weeks/months later" parse formats (both dates and deltas).
  Allow timezones in the formats "STD-#DST-#" and "+HHMM (NAME)".
  Added several timezones.
  Added "A.M." parsing (not just "AM").

Backwards incompatibilities:

  Version 5.32
    Old style Date_Init arguments no longer supported.
    *** .DateManip.cnf changed to Manip.cnf on all non-Unix platforms.

  Version 5.30
    The internal format of a delta has changed.  This will cause some people
       problems.  Use the routine Delta_Format to extract information from
       a delta.
  ############################################################################

This is a set of routines designed to make any common date/time
manipulation easy to do.  Operations such as comparing two times,
calculating a time a given amount of time from another, or parsing
international times are all easily done.  From the very beginning, the main
focus of Date::Manip has been to be able to do ANY desired date/time
operation easily, not necessarily quickly.  There are other modules that
can do a small subset of the operations available in Date::Manip much
quicker than those presented here, so if speed is a primary issue, you
should look elsewhere.  Check out the CPAN listing of Time and Date
modules.  But for sheer flexibility, I believe that Date::Manip is your
best bet.

Date::Manip deals with time as it is presented the Gregorian calendar (the
one currently in use).  The Julian calendar defined leap years as every 4th
year.  The Gregorian calendar improved this by making every 100th year NOT
a leap year, unless it was also the 400th year.  The Gregorian calendar has
been extrapolated back to the year 1000 AD and forward to the year 9999 AD.
Note that in historical context, the Julian calendar was in use until 1582
when the Gregorian calendar was adopted by the Catholic church.  Protestant
countries did not accept it until later; Germany and Netherlands in 1698,
British Empire in 1752, Russia in 1918.  Note that the Gregorian calendar
is itself imperfect.  Each year is on average 26 seconds too long, which
means that every 3,323 years, a day should be removed from the calendar.
No attempt is made to correct for that.

Date::Manip is therefore not equipped to truly deal with historical dates,
but should be able to perform (virtually) any operation dealing with a
modern time and date.

Date::Manip has (or will have) functionality to work with several fundamental
types of data.

DATE

Although the word date is used extensively here, it is actually somewhat
misleading.  Date::Manip works with the full date AND time (year, month,
day, hour, minute, second).  It doesn't work with fractional seconds.
Timezones are also supported.

NOTE:  Much better support for timezones (including Daylight Savings Time)
is planned for the future.

DELTA

This refers to a duration or elapsed time.  One thing to note is that, as
used in this module, a delta refers only to the amount of time elapsed.  It
includes no information about a starting or ending time.

RECURRENCE

A recurrence is simply a notation for defining when a recurring event
occurs.  For example, if an event occurs every other Friday or every
4 hours, this can be defined as a recurrence.  With a recurrence and a
starting and ending date, you can get a list of dates in that period when
a recurring event occurs.

GRAIN

The granularity of a time basically refers to how accurate you wish to
treat a date.  For example, if you want to compare two dates to see if
they are identical at a granularity of days, then they only have to occur
on the same day.  At a granularity of an hour, they have to occur within
an hour of each other, etc.

NOTE:  Support for this will be added soon.

Among other things, Date::Manip allow you to:

1.  Enter a date and be able to choose any format conveniant

2.  Compare two dates, entered in widely different formats to determine
    which is earlier

3.  Extract any information you want from ANY date using a format string
    similar to the Unix date command

4.  Determine the amount of time between two dates

5.  Add a time offset to a date to get a second date (i.e. determine the
    date 132 days ago or 2 years and 3 months after Jan 2, 1992)

6.  Work with dates with dates using international formats (foreign month
    names, 12/10/95 referring to October rather than December, etc.).

7.  To find a list of dates where a recurring event happens.

Each of these tasks is trivial (one or two lines at most) with this package.

------------------------------------------------------------------------------
Sullivan Beck                      http://www.cise.ufl.edu/~sbeck/
 [email-masked]  | This space reserved for some saying demonstrating great
 PH : (352) 392-1057 | wisdom, wit, or insight.  I'll fill it in just as soon
 Fax: (352) 392-1220 | as I have any of the above.
------------------------------------------------------------------------------