[threeten-dev] [threeten] Reinstate toLocalDate() and friends (#224)

Roger Riggs Roger.Riggs at oracle.com
Wed Jan 30 14:22:07 PST 2013


Doing a pre-flight on this potential change, please take a look at the 
revised javadoc and comment.

     http://cr.openjdk.java.net/~rriggs/javadoc-tolocal-224/

The changes are:

  * rename ChronoLocalDateTime.getDate/getTime/getDateTime to 
    toLocalDate()/toLocalTime()/toLocalDateTime()
  * rename the corresponding methods in LocalDateTime, OffsetDateTime,
    ZonedDateTime


I note that some obviously meaningful methods on ChronoLocalDateTime
are missing in the javadoc, for example get(field); getLong(field), 
isSupported(field);
that's a factor of the javadoc not documenting inherited methods.



On 1/30/2013 5:06 PM, Stephen Colebourne wrote:
>
> I would leave the get methods you mentioned there alone.
>
> The model to follow is that "get" methods are used for those items 
> that get the state of the type you are working with. Thus, 
> OffsetDateTime has state of offset and the 8 fields, whereas LDT just 
> has the 8 fields.
>
> The "to" methods are for converting between the basic types ODT to LD, 
> LDT or LT.
>
> So, why draw the boundary there? Well, an offset is clearly part of 
> the state of an ODT, so a "get" method is definitely applicable, and 
> it would be wrong to be other. But the date and time is more interesting.
>
> If we didn't have any field-based methods on LDT/ODT/OT/ZDT, then it 
> would be correct to have getDate/getTime. But that isn't the model we 
> adopt in the API. Instead, we expose the fields as the primary 
> representation of date and time (with lots of get/with/plus/minus 
> methods). Thus, it is the field-based methods that stay as "get".
>
> (This is a Java language limitation. In 
> psuedo-other-wonderful-language, you would write zdt.{date.year = 6} 
> and it would return a ZDT, not a LD)
>
> The second part of the explanation is around how developers use the 
> types. Changing from using one type to using another type is an 
> important choice, and one we want to actively make developers aware 
> of. (These types we refer to here are LDT/LD/LT/ODT/OT/ZDT, not 
> Offset/ZoneId). As a developer if I have a ZDT and I want a LD, I'm 
> making a very specific conversion, where the LD object will be used 
> for a different purpose to the original ZDT. By contrast, the 
> Offset/Zone are just subsidiary parts of the whole, not carrying any 
> date-time informationto convert to.
>
> Finally, toMonth and toDayOfWeek could seem appealing, but they would 
> be out of place wrt the other getters. We need to actively encourage 
> developer to use the enums to make their code more readable, and 
> getters are needed for that.
>
>> Reply to this email directly or view it on GitHub 
> <https://github.com/ThreeTen/threeten/issues/224#issuecomment-12915284>.
>

-- 
Thanks, Roger

Oracle Java Platform Group

Green Oracle <http://www.oracle.com/commitment> Oracle is committed to 
developing practices and products that help protect the environment



More information about the threeten-dev mailing list