<?xml version="1.0" encoding="ISO-8859-1"?>

<document>
 <properties>
  <title>Java date and time API - Upgrade from 1.2 to 1.3</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.2 to version 1.3.
<source>
Joda-Time version 1.3
---------------------

Joda-Time is a date and time handling library that seeks to replace the JDK
Date and Calendar classes.

This is the fourth full release of Joda-Time.
This release focuses on new features, but also include some bug fixes.

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 **


Enhancements since 1.2
----------------------
- LocalDate/LocalTime/LocalDateTime
  New classes representing date, time and datetime without a time zone.
  LocalDate is the recommended replacement for YearMonthDay.
  LocalTime is the recommended replacement for TimeOfDay.
  These classes are implemented more flexibly than YearMonthDay and TimeOfDay
  and thus solve the problem where you couldn't query or format fields such
  as dayOfWeek on a YearMonthDay or millisOfDay on a TimeOfDay.
  Neither YearMonthDay or TimeOfDay will be immediately deprecated as they
  are in widespread use.
  The API of the new classes has been kept as similar to YearMonthDay/TimeOfDay
  as possible to aid migration, so this should be a search and replace change.

- DateTime/DateMidnight/YearMonthDay/TimeOfDay
  - toLocalXxx()
  Added methods that allow conversion to the new classes, for example:
  LocalDate date = today.toLocalDate();

- DateTime/DateMidnight/YearMonthDay/TimeOfDay
  - withXxx()
  Added methods that allow an individul field to be changed, for example:
  DateTime firstOfMonth = today.withDayOfMonth(1);
  These methods are the immutable equivalent of set methods.
  These are convenince methods for the methods on the property API.

- DateTimeFormatter/DateTimeParserBucket
  If a parsed datetime is illegal due to field range or time zone offset
  transition, thrown exception includes text of datetime being parsed.

- DateTimeFormat
  - patternForStyle()
  Added method to retrieve the format pattern for a given style and locale.

- ISODateTimeFormat
  - localDateParser()
  - localTimeParser()
  - localDateOptionalTimeParser()
  - dateOptionalTimeParser()
  New formats for parsing a datetime/date/time without a time zone, and for
  parsing a date (mandatory) with an optional time


Compatibility with 1.2
----------------------
Binary compatible - Yes, except
  - PartialConverter interface has had two new methods added.
    This is an internal interface and thus it is unlikely that you have
    implementations that will break. If you did create your own implementation
    and extended AbstractConverter then your code will not break.

Source compatible - Yes, except
  - PartialConverter interface, see above

Serialization compatible - Yes

Data compatible - Yes
  - DateTimeZone data updated to version 2006g

Semantic compatible - Yes, except
  - YearMonthDay constructor no longer accepts time only strings
  - TimeOfDay constructor no longer accepts strings including a date


Deprecations since 1.2
----------------------
- Instant.toDateTimeISO
- Instant.toMutableDateTimeISO
    These were identical to the methods without the ISO suffix


Bug fixes since 1.2
-------------------
- YearMonthDay
  Constructing with String value no longer accepts a time only string

- TimeOfDay
  Constructing with String value no longer accepts date fields
  Constructing with String now treats 'T' prefix as optional

- DateTime/DateMidnight/MutableDateTime/AbstractInstant
   Conversion methods toDateTime, toDateTimeISO, toMutableDateTime, and
    toMutableDateTimeISO now preserve the time zone.
    Previously calling any of these four methods would convert the result to
    the default time zone. This was incorrect.
    The methods have been changed to preserve the time zone.
   The similarly named methods on Instant have not changed behaviour.

- Interval.overlap/Interval.gap
  Previously these methods returned intervals in the default time zone
  Now, they return intervals in the time zone of the original interval

- Interval/MutableInterval.overlaps(ReadableInterval)
  Previously, these methods did not handle null correctly
  Now, if the current millisecond instant is at the start of the interval the
  method returns false (as defined, even if its a little unexpected)

- DateTimeFormatterBuilder.MatchingParser
  Previously didn't estimate parsed length correctly

- YearMonthDay/TimeOfDay/Partial.Property
  Hashcode was not defined

- FixedDateTimeZone
  Hashcode was not defined

- ISO/Gregorian/Julian/Coptic/EthiopicChronology
  Fixed overflow when getting year field from instants at Long.MAX_VALUE and
  LONG.MIN_VALUE

- DayOfYear field
  Better error messages
</source>
</p>
</section>

</body>
</document>
