All,
I'm planning to release v1.3 (finally) later this week, perhaps Wed. So
if anyone wants to do a last source check then now is the time.
Stephen
================================
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
Feedback
--------
All feedback is welcomed at [EMAIL PROTECTED]
The Joda team
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Joda-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/joda-interest