[squeak-dev] [BUG?] TimeStamp now date = Date today. "-> false"

David T. Lewis lewis at mail.msen.com
Fri Aug 9 12:18:44 UTC 2013


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.'

 


More information about the Squeak-dev mailing list