perl-DateTime-Tiny - A date object, with as little code as possible
||openSUSE Leap 42.2
||openSUSE Oss all
*DateTime::Tiny* is a most prominent member of the the DateTime::Tiny
manpage suite of time modules.
It implements an extremely lightweight object that represents a datetime.
The Tiny Mandate
Many CPAN modules which provide the best implementation of a certain
concepts are very large. For some reason, this generally seems to be
about 3 megabyte of ram usage to load the module.
For a lot of the situations in which these large and comprehensive
implementations exist, some people will only need a small fraction of
the functionality, or only need this functionality in an ancillary
The aim of the Tiny modules is to implement an alternative to the large
module that implements a useful subset of their functionality, using as
little code as possible.
Typically, this means a module that implements between 50% and 80% of
the features of the larger module (although this is just a guideline),
but using only 100 kilobytes of code, which is about 1/30th of the
The Concept of Tiny Date and Time
Due to the inherent complexity, Date and Time is intrinsically very
difficult to implement properly.
The arguably *only* module to implement it completely correct is the
DateTime manpage. However, to implement it properly the DateTime
manpage is quite slow and requires 3-4 megabytes of memory to load.
The challenge in implementing a Tiny equivalent to DateTime is to do so
without making the functionality critically flawed, and to carefully
select the subset of functionality to implement.
If you look at where the main complexity and cost exists, you will find
that it is relatively cheap to represent a date or time as an object,
but much much more expensive to modify, manipulate or convert the
As a result, *DateTime::Tiny* provides the functionality required to
represent a date as an object, to stringify the date and to parse it
back in, but does *not* allow you to modify the dates.
The purpose of this is to allow for date object representations in
situations like log parsing and fast real-time type work.
The problem with this is that having no ability to modify date limits
the usefulness greatly.
To make up for this, *if* you have the DateTime manpage installed, any
*DateTime::Tiny* module can be inflated into the equivalent the
DateTime manpage as needing, loading the DateTime manpage on the fly if
This is somewhat similar to DateTime::LazyInit, but unlike that module
*DateTime::Tiny* is not modifiable.
For the purposes of date/time logic, all *DateTime::Tiny* objects exist
in the "C" locale, and the "floating" time zone. This may be improved
in the future if a suitably tiny way of handling timezones is found.
When converting up to full the DateTime manpage objects, these local
and time zone settings will be applied (although an ability is provided
to override this).
In addition, the implementation is strictly correct and is intended to
be very easily to sub-class for specific purposes of your own.
Install perl-DateTime-Tiny rpm package:
# zypper install perl-DateTime-Tiny