Re: ISO 8601 og beregning med måneder
[ Nouvelle discussion
| Répondre au groupe
|
dk.videnskab ]
Sujet: Re: ISO 8601 og beregning med måneder
De: mich...@zedeler.dk (Michael Zedeler)
Groupes: dk.videnskab
Organisation: Tele2 Internet Kunde
Date: 13. May 2008, 21:07:13
References: 1
|
T wrote:
> Jeg har brug for lidt hjælp til datoberegniner. Specifikt gælder det
> addition af måneder:
>
> Hvad er
>
> 29/1 +1 måned (etc)
> 28/1 + 1 måned+1 dag (etc)
> 29/2 + 1 år
> 31/8 + 1 måned [..]
> ELLER at tage det nødvendige antal måneder i næste måned, som excel gør det
> =DATE(YEAR(D4);MONTH(D4)+1;DAY(D4)) = 01.10.
>
> Hvad er "korrekt", er de begge, og hvad hedder så de forskellige standarder
> ? Jeg antager selv at den ene (excels) er baseret på absolute julian day
> number, og derefter konverteret tilbage.
>
> Jeg har ikke prøve Perl eller PHPs datomoduler endnu.
Som de andre svar indikerer er der ikke noget der er oplagt korrekt
eller forkert, kun mere eller mindre hensigtsmæssige løsninger.
Epoke-tidsstempler (også populært kaldet unix-timestamps) indeholder
blot antal sekunder der er gået siden midnat 1970-01-01. Dermed er
aritmetikken ret ligetil. Alle invariante enheder (såsom sekund, minut,
time, dag og uge) er nemme at regne med og alle andre enheder (måned,
ugenummer og år) er noget man er nødt til at bruge specielle
konverteringsbiblioteker til. Dermed bliver det svært for en udvikler at
begå fejl fordi man forstår det bagvedliggende princip.
Den modsatte løsning er at bruge en slags datorepræsentation, hvor alle
tider skrives som "yyyy-mm-dd HH:MM:ss" (modulo diverse andre formater
og med den note at der ikke er tale om den interne repræsentation, men
den som udvikleren anvender). Her er alle enheder nemme at regne med og
udvikleren har igen nemt ved at forstå de underliggende principper.
Omkostningen er en noget tungere syntaks og potentielt ugyldige datoer
(f. eks. 2008-02-30), som fører til fejl.
Det værste du kan gøre er at sætte dig imellem to stole og beslutte at
man altid lægger en måned til på en bestemt måde (se Kristians liste).
Det kan kun føre til problemer, da udvikleren enten ikke forstår
konsekvenserene eller blot får brug for noget andet.
Mvh. Michael.

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|