[squeak-dev] UTCDateAndTime discussion + Q&A
David T. Lewis
lewis at mail.msen.com
Tue Oct 23 03:21:58 UTC 2018
On Mon, Oct 22, 2018 at 09:02:57PM -0400, David T. Lewis wrote:
> Hi Chris,
>
> On Mon, Oct 22, 2018 at 04:30:52PM -0500, Chris Muller wrote:
> > Hi Dave,
> >
> > Thanks for making UTCDateAndTime available on SqueakMap that "just
> > works" -- not having to go research how to properly install it left me
> > some time to actually start looking at it today.
> >
> > A cursory look reveals that, at least functionally, everything appears
> > to be essentially the same as original Chronology except the on-going
> > million-dollar question:
> >
> > What are the point-in-time endpoints of a timespan
> > identified by a particular "Date"?
> > There are two reasonable answers to this question:
> >
> > 1) "local" e.g., a period that begins from 12am to
> > 11:59:59.999999 of my LOCAL time,
> > or 2) "global" e.g., a period that begins from 12am to
> > 11:59:59.999999 of UTC (offset 0).
> >
> > We already know that original Chronlology supports ability for
> > applications to represent their Dates either way. What about
> > UTCDateAndTime? When I do:
> >
> > DateAndTime now asDate = Date today
> >
> > I get "true", even though MY 22-Oct-2018 begins and ends at a
> > different point-in-time than those in the UTC timezone..
> >
> > I realize most applications want a canonical representation of Dates,
> > but where does this leave the timespan use-cases? Are they even
> > possible at all? What if I truly need the same local representation
> > of 22-Oct-2018 that everyone else recognizes in my local area?
> >
>
> I think the difference is when we get to Date class>>starting: which
> sets the starting point to be aDateAndTime midnight.
>
> In classic Chronology:
> DateAndTime now asDate start ==> 2018-10-22T00:00:00-04:00
>
> In UTCDateAndTime Chronology:
> DateAndTime now asDate start ==> 2018-10-22T00:00:00+00:00
>
> So I think you are right. Given that a date is modeled as a duration, the
> start time of the date should align with the timezone of the DateAndTime
> from which it was created.
>
> The likely fix is to change DateAndTime>>midnight:
>
> DateAndTime>>midnight
> "Answer a DateAndTime starting at midnight of the same timezone offset as the receiver."
> ^ self class basicNew
> setJdn: self julianDayNumber
> seconds: 0
> nano: 0
> offset: (Duration seconds: localOffsetSeconds)
>
> But fixing that triggers one other test failure so I need to sort that
> out before posting anything.
>
> Thanks for looking at this, much appreciated.
>
I added a test to cover this case in Chronology-Tests in trunk, and a
fix in the UTCDateAndTime repository in Chronology-Core-dtl.30.
Dave
More information about the Squeak-dev
mailing list
|