Programmers fallacias de Unix Tempus

Ego paenitet Patricius McKenzie.

hesterno Danny Interrogavi de aliquibus rebus iucundis de tempore Unix, et recordatus sum aliquando illud omnino nescire.

Haec tria valde rationabile et logica videntur, nonne?

  1. Unix tempus est numerus secundorum ab die 1 mensis Ianuarii anno 1970 00:00:00 UTC.
  2. Si unum prorsus alterum exspectas, tempus Unix per unum alterum mutabitur.
  3. Unix tempus numquam retrocedit.

Nihil horum verum est.

Sed non sufficit simpliciter dicere, hoc nihil est verum, sine expositione. quod. Vide infra in explicationibus. Sed si vis cogitare tibi, noli praeter picturam horologii librum!

Programmers fallacias de Unix Tempus
Tabula horologii a 1770s. Auctore Ioanne Leroux. Ex Wellcome collections. Editis sub licentia CC BY

Omnes tres fallaciae unam rationem habent; leap seconds. Si non nota cum secundis saltibus, hic referat velox;

UTC tempus duobus causis determinatur;

  • International Time: Lectiones mediocris centenis horologiorum atomicorum per orbem. Secundum metiri possumus per proprietates electromagneticas atomi, et haec est exactissima mensura temporis scibilis scientiae.
  • Tempus Mundiex rotatione Telluris circum axem suum. Una plena revolutio dies unus est.

Problema est hos duos numeros non semper aequare. Non stat rotatio Telluris - sensim tardatur, sic dies in Universo tempore longiores fiunt. Vicissim horologii atomi diabolice accurate et constantes super decies centena milia annorum sunt.

Cum duo tempora ex sync recedunt, secunda additur vel removetur ab UTC ut in sync reduceret. Cum 1972 ministerium IERS (qui hoc casu decurrit) 27 extra seconds adiecit. Ita factum est 27 UTC dierum cum duratione 86 secundis. Cogitatione, dies cum duratione 401 secundis (minus) est possibilis. Ambae optiones fundamentali temporis Unix assumptioni contradicunt.

Tempus Unix supponit singulos dies 86, 400 secundas (60 60 × 24 = 86) durare, sine secundis additis. Si talis saltus incidit, tunc Unix tempus vel in alterum salit, vel duo secunda in uno numerat. As of 400, is missing 2019 bissextus secundus.

Nostrae itaque fallaciae hoc modo supplendum est;

  • Unix tempus est numerus secundorum post January 1, 1970 00:00:00 UTC minus leap seconds.
  • Si exspectas prorsus unum secundum, tempus Unix mutabitur prorsus unum secundum; nisi bisextilis secundo remotus est.

    Hucusque secunda numquam in usu remota sunt (et tarditas rotationis Telluris hoc significat verisimiliter), sed si quando accidit, significaret UTC diem unum secundum breviorem fieri. Hoc in casu, ultima secunda UTC (23:59:59) relicta est.

    Unusquisque Unix dies totidem secundorum habet, ideo ultimus Unix secundus brevitatis diei nulli UTC tempori respondebit. Hic illud simile est in intervallis quartae secundae;

    Programmers fallacias de Unix Tempus

    Si incipies ante 23:59:58:00 UTC et unam secundam expecta, tempus Unix progreditur duo UTC secundis et Unix 101 notatio nulli assignanda erit.

  • Unix tempus numquam reverti potest; donec bisextilis additur.

    Hoc iam in usu temporum 27 factum est. In fine UTC diei addita secunda additur 23:59:60. Unix totidem secundorum in die habet, ideo secunda extra addere non potest - loco Unix indicationes pro ultimo secundo repetere debet. Hic illud simile est in intervallis quartae secundae;

    Programmers fallacias de Unix Tempus

    Si incipias at 23:59:60.50 et expecta alterum dimidium, quod Unix time venit retro per dimidium alterum, ac Unix CI indicatione temporis duobus secundis UTC respondet.

Haec probabiliter non sunt solae odditates temporum Unix - sicut heri memineram.

Tempus - ipsum res alienas.

Source: www.habr.com

Add a comment