[squeak-dev] [BUG?] TimeStamp now date = Date today. "-> false"
Bert Freudenberg
bert at freudenbergs.de
Fri Aug 9 12:57:59 UTC 2013
On 2013-08-09, at 14:18, "David T. Lewis" <lewis at mail.msen.com> wrote:
> On Fri, Aug 09, 2013 at 01:59:03PM +0200, Bert Freudenberg wrote:
>>
>> On 2013-08-09, at 09:56, Marcel Taeumel <marcel.taeumel at student.hpi.uni-potsdam.de> wrote:
>>
>>> What is it with those timezone offsets? Should this evaluate to true:
>>>
>>> "TimeStamp now date = Date today" ?
>>
>>
>> It should indeed. Apparently there are two bugs here: Date today not using the local time zone, and Dates not ignoring the time zone when comparing.
>>
>
> This may be related to the changes that we introduced in Kernel-cmm.669
> through Kernel-cmm.671. This was in February 2012, and there was discussion
> of it on the list at that time. From the update comments:
>
> Name: Kernel-cmm.669
>
> Introduced Timespan class>>defaultOffset. This is the offset that will
> be used for creation of all Timespans when an offset is not specified.
> When an offset is specified or involved in construction or calculation,
> the result is now produced in terms of the source offset.
>
> For example, Date today now produces a globalized date by default.
> However, "Date starting: (DateAndTime year: 2004 month: 2 day: 29 hour: 13 minute: 33 second: 0 offset: 2 hours)"
> produces a Date whose start is expressed in terms of UTC+2.
>
> The default defaultOffset is Duration zero so that Squeak will have fast,
> globalized Dates out of the box. Globalized Dates are common for applications.
> Legacy localized Dates can be obtained by evaluating "Date localize" so
> that, when an offset is not specified or otherwise involved in the input,
> the local offset will be used.
>
> Name: Kernel-cmm.671
>
> Decided against the localized vs. globalized mode. Timespans created in
> the context of an offset will start in that offset. When no context is
> available, the defaultOffset for Timespans must be zero. For example,
> two ways to make a Date for today:
>
> Date today. 'start is midnight at offset zero. Will compare successfully
> to other Date today results.'
>
> DateAndTime now asDate. 'In this case, the start is midnight of the local
> time-zone. It can only compare equally to Dates of its time-zone.'
Maybe the source of the confusion is a missing class Day? Both Day and Date seem rolled into one, so Date is now a Timespan subclass when it really should not depend on time ...
- Bert -
More information about the Squeak-dev
mailing list
|