[squeak-dev] UnixTime
David T. Lewis
lewis at mail.msen.com
Sun Nov 20 23:01:49 UTC 2016
On Sun, Nov 20, 2016 at 01:04:07PM -0800, Eliot Miranda wrote:
>
>
> > On Nov 20, 2016, at 12:45 PM, Chris Muller <asqueaker at gmail.com> wrote:
> >
> > I don't agree that the Squeak epoch was "supposed" to have been
> > defined relative to UTC. Its just a number, it don't see that it
> > matters when or what number we start with, as long as it satisfies its
> > requirement of being a numerical representation, and we don't change
> > it. Changing it would be breaking it for all applications which ever
> > used it.
>
> +1. And also requiring vm mods and breaking vm backward compatibility. IIABDFI.
Um, no.
Eliot, I think that you have previously explained that the Smalltalk epoch was
intended to refer to 1 January 1901 GMT. That is a good thing because it makes
sense, and also because the earlier implementations of Squeak and the VM were
based on local time, which makes no sense at all.
I was not suggesting any change with regard to this definition, and I was not
suggesting any changes to the VM.
What I am saying is that DateAndTime class>>fromSeconds: is broken because
it's method comment says "Answer a DateAndTime since the Squeak epoch", and
its implementation does not do that.
Dave
>
> _,,,^..^,,,_ (phone)
> >
> >> On Sat, Nov 19, 2016 at 10:12 PM, David T. Lewis <lewis at mail.msen.com> wrote:
> >>> On Fri, Nov 18, 2016 at 07:01:29PM +0100, Bert Freudenberg wrote:
> >>>
> >>> On Fri, Nov 18, 2016 at 2:16 PM, Edgar De Cleene <edgardec2005 at gmail.com>
> >>> wrote:
> >>>
> >>>> Fellows:
> >>>> I found useful add UnixTime at the beginning of file names for you have
> >>>> nnnFoo.etc what is compatible with different OS and you easily see ordered
> >>>> .
> >>>>
> >>>> But I my image I do not have how convert this value to DateAndTime again.
> >>>> So i attach this just in case some could use it.
> >>>>
> >>>
> >>> Since we already have DateAndTime>>asUnixTime, having DateAndTime
> >>> class>>fromUnixTime: seems like a reasonable addition. Thank you!
> >>>
> >>> - Bert -
> >>
> >> Edgar's enhancement looks good to me also, but unfortunately it does not
> >> work due to a problem in DateAndTime class>>fromSeconds:, which is supposed
> >> to do this:
> >>
> >> DateAndTime class>>fromSeconds: seconds
> >> "Answer a DateAndTime since the Squeak epoch: 1 January 1901"
> >>
> >>
> >> If we agree that the Squeak epoch was supposed to have been defined relative
> >> to UTC, then #fromSeconds: is broken because it treats its argument as
> >> seconds since the "local Squeak epoch" (early Squeak VMs were built upon
> >> the faulty premise of using local time).
> >>
> >> Because of this problem in #fromSeconds: we get the following (I am five
> >> hours from GMT):
> >>
> >> dt1 := DateAndTime now.
> >> unixSeconds1 := dt1 asUnixTime.
> >> dt2 := DateAndTime fromUnixTime: unixSeconds1.
> >> unixSeconds2 := dt2 asUnixTime.
> >> dt2 - dt1. ==> 0:04:59:59.890588
> >> unixSeconds2 - unixSeconds1. ==> 18000
> >>
> >> IMO, Edgar's method is correct and we should fix DateAndTime class>>fromSeconds:
> >> so that the argument is interpreted as seconds since the UTC Smalltalk epoch.
> >>
> >> <OT>
> >> Note also that #asUnixTime truncates (or rounds?) to a whole second, which is
> >> reasonable given that Unix time(2) does the same thing. But it might deserve
> >> a method comment if that is the intended behavior. If the method was named
> >> #asPosixTime, then I might argue that the value should not be rounded or
> >> truncated.
> >> </OT>
> >>
> >> Dave
> >>
> >>
> >
>
More information about the Squeak-dev
mailing list
|