POJava DateTime v3.x.x
POJava DateTime is a utility library for parsing and transforming dates and times.
Its key feature is the ability to parse dates from common and uncommon formats,
in most languages, without having to specify the language or format.
The immutable DateTime object supports dates and times down to millisecond precision,
has a built-in formatter, and simple methods for truncation, date math, and time zone
conversion.
Change Log
======================
Version 3.1.0
This version supports a feature request for a parsing function that allows the requester to know which
elements (such as Year, Month, Day, Hour, Minute, Second) were interpreted during the parse.
Version 3.0.2
This fixes a bug in which dates of the format “dd mmm yy” with the month abbreviation ending in “T” would cause the year to be interpreted as 00yy”.
Version 3.0.1
This corrects a couple of defects. Prior versions assumed a TimeZone specifier would be
the last element of a date, so dates like "16-March 03:45:15 GMT+0600 2014" would be
incorrectly parsed because the year follows the TimeZone.
The second defect fixed was introduced in 3.0.0, and is a little more subtle. If a date includes
a word near the right side that isn't part of the date, the parser will incorrectly infer it
to be a TimeZone, and when it doesn't match a valid time zone identifier, it will revert to the
default InputTimeZone of the system-global IDateTimeConfig. That's normally the desired behaviour,
but when a TimeZone is specified on the DateTime constructor, that TimeZone should override the
default, and did not under that specific use case.
Version 3.0.0
This version includes substantial improvements to the configuration object used to hold
attributes that help the parser make decisions, such as what time zone is used when
unspecified, whether MDY order or DMY order is assumed, and what default format to use
for the toString() method. The global default now returns an interface, rather than a
specific object, making it easier to customize the global defaults.
When overriding TimeZones, the DateTime object now wraps an IDateTimeConfig, overriding
the TimeZone fields as needed rather than creating a clone-- less work, less garbage collection.
The language interpreter for month names is vastly improved, now relying on a large
hash table built up from definitions used by Java's date formatter. It supports the
addition of arbitrary abbreviations, but most languages are supported out of the box.