On Mon, Apr 9, 2018 at 1:46 PM, Sean P. DeNigris <s...@clipperadams.com>
wrote:

> Sven Van Caekenberghe-2 wrote
> > So you want to change '1/1/1990' asDate so that it does the equivalent of
> > (DateAndTime fromString: '1990-01-01T00:00:00Z') asDate.
>
> Precisely.
>
> That won't work :)

'1/1/1990' asDate =
(DateAndTime fromString: '1990-01-01T00:00:00Z') asDate ->  true

(DateAndTime fromString: '1990-01-01T00:00:00Z') asDate start ->
1990-01-01T00:00:00-04:00

The date doesn't change converted to local timezone.  So you could solve
your problem by comparing just the date part yyyymmdd.

Note that

Timespan >> = comparand
^ self class = comparand class
and: [ self start = comparand start
and: [ self duration = comparand duration ] ]

Maybe a good solution is to modify the start check for the Date class?  I
don't seem to have any real control over the start so having that be part
of my check and fail seems wrong on this class.

Date >> starting: aDateAndTime

^super starting: (aDateAndTime midnight) duration: (Duration days: 1)

Suggest the fix is

Date>> = comparand
^ self class = comparand class
and: [ "Converts to current tz for comparision"
                          self start midnight = comparand start midnight
and: [ self duration = comparand duration ] ]

or

Date>> = comparand
^ self class = comparand class
and: [ "Compare only date part"
                          self start yyyymmdd = comparand start yyyymmdd
and: [ self duration = comparand duration ] ]

Seems to match the intent of the class without changing the timezone.

All the best,

Ron Teitelbaum


> Sven Van Caekenberghe-2 wrote
> > While you would not want to change Date today so that it does the
> > equivalent of DateAndTime now asUTC asDate.
>
> I guess it would make sense for consistency and thinking further,
> `yesterday` and friends suffer from the same problems we've been
> discussing.
>
>
>
> -----
> Cheers,
> Sean
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html
>
>
>

Reply via email to