[squeak-dev] UnixTime

Eliot Miranda eliot.miranda at gmail.com
Sun Nov 20 21:04:07 UTC 2016

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

_,,,^..^,,,_ (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