[squeak-dev] TimeZone Check-In

Chris Muller ma.chris.m at gmail.com
Fri Sep 6 22:02:52 UTC 2019


Hi Ron,

That makes sense to me.  Still shouldn't myDateAndTime asDate also have no
> time-specific information or is there a benefit to it?  The bug persists if
> you accidentally create a date from one or the other and compare them.
>

"Benefit" is from the eye of each user, of course.  Date was modeled like
Hour and Minute, as a Timespan.  For applications modeling, say, a proper
chronological sequence of events, yes, it would be essential for like Dates
to still represent the distinct spans just as they did in real life.  My
September 6th began at my midnight, not the same time as someone elses
across the globe.  Chronology provides the resolution to support this.
Truncating that resolution is up to applications.

When using Chronology, developers need to remember it maintains a robust
model of time which serves domains other than the one they're working on.
Truncating precision (e.g., a DateAndTime asDate) in applications is pretty
rare, but certainly not something to do willy-nilly.  Developer's with any
chance of success must give long enough pause to wonder and research about
the nature of any and all coercions they perform in their applications.


> I'm still struggling to find any reason to have the offset set to a date
> of any kind that doesn't have a time attached to it.  It might make sense
> if we knew or could sort out dates that didn't belong but with without the
> time you don't even know that.  That only reason I can think of would be to
> separate dates created in different time zones for reporting but I keep
> thinking that even that seems wrong because I wouldn't want to depend on
> some obscure feature like that, instead I would make it more explicit and
> save the location directly.
>
> I think myDateAndTime asDate should also use the default offset of 0.
>

No.  That would make it inconsistent with #asHour and #asMinute.

Best,
  Chris


>
> All the best,
>
> Ron
>
> On Thu, Sep 5, 2019 at 7:47 PM Chris Muller <asqueaker at gmail.com> wrote:
>
>> I believe Brent developed Chronology from a simple and steadfast
>> conceptual model of time:
>>
>>   - A *point* in time (DateAndTime+TZ)
>>   - A *duration* of time (Duration)
>>   - A *span* of time beginning from a specific point (Timespan)
>>
>> Steadfastly to the model, Minute, Hour and Date implementations emerged
>> as "spans" of time of those given Durations, and beginning from whatever
>> the client-specified point in time was, including TZ.  From there,
>> Chronology left it up to clients to do what was necessary to fit their use
>> cases.
>>
>> The problem is that "Canonical Date" is a use-case is immensely common
>> that, yes, it felt like a "longstanding bug" for Chronology not to address
>> it.  We finally did in a way that preserves those original tenets of the
>> domain.
>>
>> Best,
>>   Chris
>>
>>
>> On Thu, Sep 5, 2019 at 6:08 PM Ron Teitelbaum <ron at usmedrec.com> wrote:
>>
>>> Hi Chris,
>>>
>>> Just wondering what the benefit of myDateAndTime asDate holding the
>>> timezone information is used for.  Do you report dates based on Timezone
>>> from the saved date?  That is the only real benefit I can think of because
>>> without the actual time you don't know if the date is wrong for any
>>> particular context.  I'm just interested to know how the offset might be
>>> used.
>>>
>>> Thanks!
>>>
>>> All the best,
>>>
>>> Ron Teitelbaum
>>>
>>> On Thu, Sep 5, 2019 at 4:56 PM Chris Muller <asqueaker at gmail.com> wrote:
>>>
>>>> Hi Sean,
>>>>
>>>> No.  The recent UTCDateAndTime format change to Squeak made no
>>>> difference in this regard.  The example you gave had already been fixed
>>>> previously by the introduction of #defaultOffset back in 2012.  Dates
>>>> created in non-TZ-specific contexts all get a defaultOffset of 0:00.
>>>>
>>>> So, in your example, '1/1/1901' asDate has no time-specific
>>>> information, so it would inherit the defaultOffset (0:00), which compares
>>>> favorably to other Dates with the same offset.  Only Dates which were
>>>> created via:
>>>>
>>>>      myDateAndTime asDate
>>>>
>>>> would inherit the timezone from myDateAndTime, and therefore represent
>>>> a different period of time than the ones that began at offset 0:00.
>>>>
>>>>  - Chris
>>>>
>>>>
>>>>
>>>> On Wed, Sep 4, 2019 at 11:52 AM Sean P. DeNigris <sean at clipperadams.com>
>>>> wrote:
>>>>
>>>>> Did the recent changes to Squeak's Date/Time handling (or any 3rd
>>>>> party lib)
>>>>> ever solve the following longstanding Chronology bug:
>>>>>
>>>> >Consider this thought experiment:
>>>>> > At 11:59pm before DST changes, eval aDate := '1/1/1901' asDate.
>>>>> > Now, wait two minutes and at 12:01am eval self assert: '1/1/1901'
>>>>> asDate =
>>>>> > aDate and… whammo, an exception!
>>>>> > The "different" offsets render equal dates unequal depending on when
>>>>> the
>>>>> > objects were created.
>>>>> > The fact that the offset is the one active at object creation is the
>>>>> key
>>>>> > error, because it should be the offset active when the date occurred.
>>>>>
>>>>>
>>>>>
>>>>> -----
>>>>> Cheers,
>>>>> Sean
>>>>> --
>>>>> Sent from: http://forum.world.st/Squeak-Dev-f45488.html
>>>>>
>>>>>
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20190906/296892e2/attachment.html>


More information about the Squeak-dev mailing list