From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Achim Gratz Newsgroups: gmane.emacs.devel Subject: Re: Represent NTP's origin time Date: Sat, 17 Apr 2021 15:44:28 +0200 Organization: Linux Private Site Message-ID: <8735vpyqir.fsf@Rainer.invalid> References: <87o8efcqfh.fsf@Rainer.invalid> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11225"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) To: emacs-devel@gnu.org Cancel-Lock: sha1:WzFoAQ62tYKAonqlj5r+2XbopZw= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Apr 17 15:45:41 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lXlGX-0002lU-Qk for ged-emacs-devel@m.gmane-mx.org; Sat, 17 Apr 2021 15:45:41 +0200 Original-Received: from localhost ([::1]:54214 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lXlGW-0002az-Oh for ged-emacs-devel@m.gmane-mx.org; Sat, 17 Apr 2021 09:45:40 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59318) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXlFW-0001pn-Gz for emacs-devel@gnu.org; Sat, 17 Apr 2021 09:44:38 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:39986) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lXlFU-000377-9C for emacs-devel@gnu.org; Sat, 17 Apr 2021 09:44:38 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1lXlFR-0001OS-8W for emacs-devel@gnu.org; Sat, 17 Apr 2021 15:44:33 +0200 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:268127 Archived-At: Achim Gratz writes: > Stefan Monnier writes: >> NTP represents time stamps by counting seconds from January 1 1900, but >> my Emacs doesn't seem to be able to represent this: >> >> (encode-time (parse-time-string "1902-01-01T00:00-00:00")) >> => (-32745 59520) >> (encode-time (parse-time-string "1900-01-01T00:00-00:00")) >> => (error "Specified time is not representable") >> >> Do we have some "standard" workaround? > > Get off your 32bit system already? There have been responses that called this answer "unkind" or "snarky". It wasn't meant to be, I apologise for the impression that was likely created by being too brief. I stand by what I said, though: The standard workaround is to do whatever you were trying to do on a system with a 64bit time_t instead. Indeed that very problem is what drove me off my own 32bit installation a few years ago and other than the time spent to figure out how to convert the system without a full re-installation (which probably would have taken less time, all things considered) I have no regrets about doing that. One of the workarounds (or really limp-alongs) that I've used before that was using the difference of 2,208,988,800 seconds between UNIX and NTP epoch (as mentioned in another answer already) that is documented in many places, for instance here: https://www.eecis.udel.edu/~mills/y2k.html That works for the majority of cases (in particular all "real" NTPv3 time stamps ever produced) on all systems that I've worked on. It doesn't change the fact that dates before the UNIX epoch can not be represented with an unsigned 32bit time_t (does Emacs still run on any systems that do this?) and a signed one peters out at 1901-12-13T20:45:52+00:00 when looking back from the epoch. Outside the "NTP prime era" you'd have to keep track of the era/epoch seperately and that's just the start of your troubles then. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Factory and User Sound Singles for Waldorf Blofeld: http://Synth.Stromeko.net/Downloads.html#WaldorfSounds