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