<?xml version="1.0" encoding="ISO-8859-1"?> | |
<document> | |
<properties> | |
<title>Java date and time API - Upgrade from 1.0 to 1.1</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.0 to version 1.1. | |
<source> | |
Joda-Time version 1.1 | |
--------------------- | |
Joda-Time is a date and time handling library that seeks to replace the JDK | |
Date and Calendar classes. | |
This is the second full release of Joda-Time. | |
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 cause you problems please contact the mailing list. | |
Incompatible changes since 1.0 | |
------------------------------ | |
Binary compatible - Yes | |
- v1.0 and v1.1 are binary compatible in their public and protected API | |
Source compatible - Yes | |
- v1.0 and v1.1 are source compatible in their public and protected API | |
Serialization compatible - Yes, except: | |
- DateTime.Property, DateMidnight.Property and MutableDateTime.Property | |
serialization formats have changed to fix a bug. | |
Please note that this only affects the property classes, and not DateTime, | |
DateMidnight or MutableDateTime themselves | |
It is unlikely that you serialized one of these classes | |
Data compatible - Yes, except: | |
- Removed time zones Asia/Riyadh87, Asia/Riyadh88 and Asia/Riyadh89. | |
These should not have been included in the 1.0 release, and do not represent | |
genuine time zones. It is unlikely that you used them. | |
If you do want to use them, please contact the joda-interest mailing list | |
Warnings since 1.0 | |
------------------ | |
ReadablePartial now has a comment recommending that all implementations | |
should also implement Comparable. | |
This is most easily achieved by extending AbstractPartial. | |
Deprecations since 1.0 | |
---------------------- | |
None | |
Bug fixes since 1.0 | |
------------------- | |
- Date and Time (ZoneInfoCompiler) | |
Greek summer time was incorrect due to a comment parsing bug. | |
This disabled DST (summer time) for Europe/Athens after 1980. | |
- DateTimeFormat | |
Parsing of two digit year by DateTimeFormat supports parsing of more or less | |
than two digits, for compatibility with java.text.SimpleDateFormat. If not | |
two digits or if sign character is present, then year is parsed as absolute. | |
- GJChronology | |
Range duration field of dayOfMonth was not consistent with monthOfYear. This | |
bug manifested itself when adding/subtracting periods to partials. | |
- DateTimeParserBucket | |
Fixed parsing date where format includes era. Era must be set and rounded | |
before any other fields. | |
- PeriodFormatterBuilder | |
Formatters that had fields which required a zero to be printed were not being | |
parsed. | |
- DateTime.Property, DateMidnight.Property and MutableDateTime.Property | |
Could previously only be serialized in UTC. | |
The serialization format has been changed to be simpler and more reliable. | |
Unfortunately, this was an incompatible change to the serialization format. | |
- DateTimeFormatterBuilder/PeriodFormatterBuilder | |
Number parser would accept multiple sign characters as valid. | |
- YearMonthDay/TimeOfDay.withChronologyRetainFields | |
Previously, switching chronology did not validate the fields, so you could | |
end up with an object in an invalid state, such as a YearMonthDay where | |
dayOfMonth=31 with Coptic. | |
This method can now throw an IllegalArgumentException | |
- Chronologies | |
Overflowed calculations involving year throw ArithmeticException rather than | |
produce a bogus result. | |
- DateTimeFormatterBuilder.canBuildFormatter() | |
Previously this method always returned false. | |
Enhancements since 1.0 | |
---------------------- | |
- Partial | |
New immutable implementation of ReadablePartial. | |
This implementation is flexible as to the fields that it stores. | |
Thus, if you want a partial holding just a year and monthOfYear (perhaps | |
for a credit card expiry date), then this class can be used. | |
Full support for almost all truncated and reduced precision ISO output | |
formats is available via use of this class. | |
- DateTime/DateMidnight/MutableDateTime/YearMonthDay/TimeOfDay | |
Added convenience plusXxx() and minusXxx() methods to add/subtract a period | |
For example, dt.plus(Period.days(6)) can now be replaced by dt.plusDays(6) | |
- DateTime/DateMidnight/MutableDateTime/YearMonthDay/TimeOfDay | |
Added convenience toString() method that takes a DateTimeFormatter | |
For example, dt.toString(DateTimeFormat.shortDateTime()) | |
- YearMonthDay/TimeOfDay/AbstractPartial | |
Enabled comparisons using Comparable interface | |
Added compareTo/isEqual/isAfter/isBefore methods | |
These methods were added to AbstractPartial, and are thus available to | |
all implementations of ReadablePartial | |
- YearMonthDay/TimeOfDay | |
Extra time zone constructor | |
Allows current date and time to be accurately obtained | |
- DateTime/DateMidnight/MutableDateTime/YearMonthDay/TimeOfDay Property | |
Added new method to property class - getAsString() | |
Gets the value as a string, not using text values like 'Monday' or 'January' | |
- Period | |
Added constructors to create a Period from two ReadablePartials, such as | |
YearMonthDay or TimeOfDay | |
- Period | |
Added factory to create a Period from two ReadablePartials using an | |
alternative, field-based, calculation | |
- DateTimeUtils | |
Added isContiguous(ReadablePartial) to test if a partial is contiguous | |
(see the method for the definition) | |
- PeriodType | |
Added factory method forFields() to allow a PeriodType to be obtained | |
from any set of DurationFieldType objects | |
- PeriodType | |
Added three new period types - YearMonthDay, YearWeekDay and YearDay | |
These complement the existing ones but exclude the time fields. | |
- DateTimeFormatter | |
Method withPivotYear added to allow the two digit pivot year to be controlled. | |
This is most useful after creating a format from a string pattern. | |
- DateTimeFormatter | |
Added lenient parse option to appendTwoDigitYear and appendTwoDigitWeekyear. | |
- Interval | |
Added overlap method that returns the actual overlap between two intervals. | |
Added gap method that returns the gap between two intervals. | |
Added abuts method that returns true if two intervals abut. | |
- DateTimeUtils | |
Added getReadableInterval(ReadableInterval) method to handle null intervals | |
- IllegalFieldValueException | |
Added new exception subclass of IllegalArgumentException to capture more | |
context when a field is set to an illegal value. This can be helpful in | |
interactive applications. | |
- GJLocaleSymbols | |
Supports parsing "CE" and "BCE" as era if locale language is English. | |
- ISODateTimeFormat | |
New method, forFields(), which gets an ISO format for a set of fields. | |
This is useful for more unusual formats such as DayHour. | |
- ISODateTimeFormat | |
New methods to output ordinal style dates, such as 2005-161. | |
- DateTimeZone classes updated to latest data from the Olson time zone database | |
</source> | |
</p> | |
</section> | |
</body> | |
</document> |