Jump to content
  • 0

Systeemdatum Mac en Windows: nog altijd 1904 en 1900 ?


AvD

Question

Posted

De datum wordt zowel op Mac als op Windows bijgehouden door het aantal dagen te tellen vanaf 1 januari 1900 (Windows) en 1904 (Macintosh). Ik dacht dat Mac intussen ook overgeschakeld was naar 1900, maar in het FileMaker Scriptology book van Osborne en Petrowsky zou nog altijd 1904 in de formules staan, bijvoorbeeld wanneer het erop aankomt de datum 2 dagen later te berekenen met uitsluiting van de zaterdagen en de zondagen:

 

DayStart + Middle("2222432"; Mod(DayStart - Date(1;3;1904); 7) + 1;1)

 

Hoe zit het nu eigenlijk ? 1900 of 1904 ?

4 answers to this question

Recommended Posts

  • 0
Posted

Euh, ik denk dat we kunnen spreken van 4 systemen ondertussen:

- Windows (telling vanaf 1-1-1900)

- MacOS ->9 (telling vanaf 1-1-1904)

- MacOS X (telling vanaf 1-1-1970)

- FileMaker Pro (telling vanaf 1-1-0001)

 

Het lijkt mij nogal raar dat John en Matt een FileMaker formule maken die buiten de "invloedssfeer" ligt van FileMaker. Je rekent in FileMaker Pro met datums tussen 1-1-0001 en 31-12-3000, en van het OS waar je op draait moet je jezelf niets aantrekken. Dit in tegenstelling met bijvoorbeeld Microsoft Excel.

 

Iets waar je echter wel rekening mee moet houden is dat er over de jaren heen wel wat verschuivingen zijn geweest in de kalender.

Nachtkastjeslectuur hierover vind je op http://www.wundermoosen.com/wmCalReform.htm

Maar dat zuiver ter informatie :? .

 

Hoe zit het nu eigenlijk ? 1900 of 1904 ?

Ik denk dat die datum puur als referentiedatum gebruikt hebben. De string "2222432" is de referentie waarde voor de week van 3-1-1904. Dus niks van aantrekken denk ik zolang je met recente datums werkt.

 

Ziet er voor de rest een geniale formule uit. Kan je even uitleggen waar je hem voor gebruikt?

  • 0
Posted

Eigenlijk - feitelijk gebruik ik die 'formule' al sinds Filemaker II en in Filemaker Pro 2.x

 

Die truuk werd/wordt gebruikt voor het bepalen van een 'weekdag' of al wat ermee kon/kan te maken hebben.

 

Enkele voorbeelden uit de 'oude doos' :

 

Het bepalen van een dag tussen maandag en vrijdag (indien de uitkomst zou vallen op een zaterdag of zondag geeft het de volgende maandag, anders de datum in het aangegeven veld) :

 

Datumveld + Middle("1000002",Mod (Datumveld - Date(1,3,1904),7)+1,1)

 

Zelfde als voorgaande maar uitkomst 30 dagen na datumveld :

 

Datumveld + 30 + Middle("1000002", Mod (Datumveld + 30 - Date(1,3,1904),7+1,1)

 

Berekent de 'vorige' vrijdag als Datumveld zaterdag of zondag is :

 

Datumveld - Middle ("2000001"), Mod (Datumveld - Date(1,3,1904),7)+1,1)

 

Berekent de eerste weekdag (in dit geval een maandag) t.o.v. Datumveld :

 

Datumveld - Middle ("6012345", Mod(Datumveld - date(1,3,1904),7)+1,1)

 

of

 

Date(1,3,1904) + (INT ((Datumveld - Date (1,3,1904))/7)*7)

 

Waarschijnlijk omdat 1/3/1904 een 'gekende dag' is die ver genoeg in het verleden ligt om berekeningen mee te kunnen maken.

 

In die tijd vroegen we ons niet snel af 'waarom' iets was.... we waren al blij als de truuk wilde werken. :D

  • 0
Posted

Antwoord aan Peter:

1) bedankt voor de knappe uitleg

2) het ging om het vastleggen van facturatie-data op basis van geleverde en inmiddels afgesloten prestaties. Er mochten geen data vallen op zaterdagen en zondagen. Feestdagen waren zo goed als uitgesloten wegens de afsluitperiode van de prestaties.

 

Aan allen:

wat die 1904 betreft deden in de tijd nogal wat geruchten de ronde: aardbeving San Francisco, datum vóór de geboortedatum van de alleroudste medewerker of contact in de oorspronkelijke Mac-garage groep (daar zat dus wel een oud mannetje bij !), en nog wat van die dingen. Heb er nooit het fijne van geweten. Er werd toen wel verteld dat een Excel-blad van Windows automatisch gecorrigeerd werd als het geopend werd op Mac en vice versa. Heb daarmee in elk geval nooit problemen gehad.

  • 0
Posted

Had het niet direct door. Deze berekening dateert van voor de choose() functie, en eigenlijk vind ik Middle() overzichtelijker als je geen 0 als mogelijke uitkomst hebt.

 

De reden voor "1904" was geloof ik omdat 1900 per uitzondering geen schrikkeljaar is. Dat was nogal lastig om mee te programmeren, dus hebben de systeemprogrammeurs gekozen voor het eerstvolgende schrikkeljaar.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...