blob: 57742db87ad4bfae45297719dfd4e779e326bc59 [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1"?>
<document>
<properties>
<title>Java date and time API - Upgrade from 1.1 to 1.2</title>
<author>Stephen Colebourne</author>
</properties>
<body>
<section name="Upgrade">
<p>
These are the release notes and advice for upgrading Joda-Time from
version 1.1 to version 1.2.
<source>
Joda-Time version 1.2
---------------------
Joda-Time is a date and time handling library that seeks to replace the JDK
Date and Calendar classes.
This is the third full release of Joda-Time.
This release focuses on bug fixes, with a few new features.
We recommend JDK 1.3 or later, and have performed no testing on earlier JDKs.
Joda-Time is licensed under the business-friendly Apache License Version 2.
This is the same license as all of Apache, plus other open source projects such as Spring.
The intent is to make the code available to the Java community with the minimum
of restrictions. If the license causes you problems please contact the mailing list.
** Please also check out the JSP and Hibernate contributed projects **
Incompatible changes since 1.1
------------------------------
Binary compatible - Yes, except
- The internal classes BaseGJChronology and CommonGJChronology have been removed
They were implementation classes and you should not have been using them
Please contact the mailing list if this causes you problems
Source compatible - Yes
- v1.1 and v1.2 are source compatible in their public and protected API
Serialization compatible - Yes
- Chronology serialization has changed, however the two formats are compatible
- v1.1 did not serialize the Chronology minimum days in first week field properly, v1.2 does
Data compatible - Yes
- DateTimeZone data updated to version 2005q
Deprecations since 1.1
----------------------
- Chronology factory methods, such as getISO() and getCopticUTC()
You should now use the chrono package directly:
Chronology.getCoptic(zone) is replaced by
CopticChronology.getInstance(zone)
These factory methods have been removed as they were unable to scale
suitably as more and more chronologies are added
Bug fixes since 1.1
-------------------
- ZonedChronology
getMaximumValue(ReadablePartial)/getMinimumValue(ReadablePartial)
Methods returned incorrect result
- ZonedChronology
Better detection and handling of offset calculation overflow, throwing
an ArithmeticException.
- DateTimeZone
Handles offset calculation overflow errors for instants near Long.MAX_VALUE,
ending the offset transition sequence.
- DateTimeFormatter
Reverts to UTC if time zone offset calculation causes overflow. This allows at least
the time of day fields to be printed for instants near Long.MIN_VALUE or Long.MAX_VALUE.
- CopticChronology
Fixed regression in month of year calculation which affected getMaximumValue
on dayOfMonth field.
- CopticChronology
Fixed month duration field to handle short 13th month correctly.
- ZonedChronology
Fixed getting text values for fields from getAs[Short]Text(int value, Locale locale).
- Gregorian, Julian, GJ and Coptic
These Chronology classes did not correctly store the minimum days in first week
during serialization
- DateTimeFormatter
Fixed printing of time zone name near DST transition
- YearMonthDay
Fixed addition where date starts on a leap day
Fixed addition in the GJChronology
- DateTimeFormat
Pattern letter 'K' was using the wrong underlying implementation
Enhancements since 1.1
----------------------
- IslamicChronology
- EthiopicChronology
New Chronologies
- DateTime.Property.withMaximumValue() (also DateMidnight/YearMonthDay etc)
- DateTime.Property.withMinimumValue()
Returns a copy of the base datetime with the specified field set to
the maximum or minimum value. This is useful to get the last day of the month.
- DateTime lastDayOfMonth = dt.dayOfMonth().withMaximumValue();
- DateTime.Property.toInterval() (also DateMidnight/MutableDateTime)
New method to convert return an Interval object over the span of the property
Thus dt.monthOfYear().toInterval() returns an interval from the start to
the end of the month
- MutableDateTime.property(DateTimeFieldType)
Gets the property by type. Complements the method already on DateTime/DateMidnight.
- YearMonthDay.fromCalendarFields()
- YearMonthDay.fromDateFields()
- TimeOfDay.fromCalendarFields()
- TimeOfDay.fromDateFields()
New factory methods to create a YearMonthDay/TimeOfDay using exactly the same
field values as the JDK objects, thus ignoring time zone effects
- FieldUtils
Performance optimization when adding by scalars of one or negative one. The
overflow detecting multiplication skips the multiply and divide check for
these values.
</source>
</p>
</section>
</body>
</document>