Avatar billede halu Nybegynder
13. august 2002 - 12:15 Der er 8 kommentarer og
1 løsning

dato - timestamp - sortering - tidslinier.

Hej

jeg mangler en ide til hvordan jeg få løst følgende problem.
Jeg har en række strenge der repræsenterer datoer, disse strenge følger GNU-date-syntaksen - så de kan med andre ord oversættes til et timestamp med strtotime.
Mit problem er, en 32 bit maskine, så jeg ikke kan operere med dato repræsentationer fra før ca 1901 - hvilket er nødvendigt.

Er der nogle der kender til en løsning på et sådant problem?

halu
Avatar billede jakoba Nybegynder
13. august 2002 - 12:30 #1
hvis problemet var 32bit grænsen ville du kunne håndtre årstal fra ca år 1400 til år 2550. er du sikker på det ikke bare er et Y2K problem med at årstallet huskes som 2 cifre et sted?
Avatar billede tipsen Nybegynder
13. august 2002 - 12:46 #2
Hvis en dato oversættes til unix-timestamp er det en integer og begrænsningen går med udgangspunkt i 1/1-1970 ned til 1901 og op til 2038 eller noget i den retning... - begrænsningen kommer fra integer-typen.
Avatar billede halu Nybegynder
13. august 2002 - 12:54 #3
Ja- naturligvis et integer problem :-)
men problemet er det samme - forslag?
Avatar billede tipsen Nybegynder
13. august 2002 - 13:03 #4
Du kommer ikke til at kunne bruge de indbyggede funktioner i php og efter at have rodet rundt i 15 min. på nettet tror jeg ikke der findes nogle færdige komponenter du kan bruge.

Jeg vil foreslå, at du laver en funktion der nemt kan snuppe dag, måned og årstal fra dine datostrenge og så laver en stribe funktioner der kan arbejde med dem.

Og så håber jeg ikke det du har behov for at lave med dem er for avanceret for så løber du vist ind i mange forskellige typer problemer...

Held og lykke!
Avatar billede jakoba Nybegynder
13. august 2002 - 14:19 #5
der er en pæn beskrivelse her:
http://www.sunsite.ualberta.ca/Documentation/Gnu/tar-1.13/html_chapter/tar_7.html
afsnit:  7.2 Calendar date item
Avatar billede halu Nybegynder
13. august 2002 - 14:57 #6
tak - jeg kender GNU-date syntaksen. problemet er stadig 32bit signed integer størrelsen ->
eksempelvis: $periode = strtotime("14 days ago") - strtotime("1/1/1862"); går ikke - så jeg må nok igang med at lave en klasse til dato objekter, med en float repræsentation istedet  :-(
andre forslag er stadig velkommene.
Avatar billede tipsen Nybegynder
13. august 2002 - 17:43 #7
Du kan evt. omskrive de indbyggede dato/tid funktioner i php - udvid dem til at håndtere 64bit :-)
Avatar billede tipsen Nybegynder
13. august 2002 - 22:31 #8
Haha - jeg tror jeg har fundet løsningen til dig - der er lavet en klasse til at håndtere datoer som er uafhængig af 32bit dato systemet som ellers bruges - hvilket betyder at du sandsynligvis kan bruge det med dine datoer! Du kan finde det på pear.php.net:

http://pear.php.net/package-info.php?pacid=57

Der er vist ikke den store dokumentation, men der er nogenlunde fornuftigt kommenteret kildekode!
Avatar billede halu Nybegynder
14. august 2002 - 15:04 #9
takker tipsen
Det var næsten lige det jeg søget - jeg har kigget kilde koden igennem - det ser ud til at være et virkeligt godt udgangspunkt- jeg kan se at der implementeres en timestamp agtig funktion - der giver det nøjagtige antal dage fra år 0 til datoen - lige hvad jeg har brug for, ellers ser det ud til at langt de fleste brugbare funktioner er med - hvilken ugedag er dato o.s.v - det eneste jeg mangler er en konstruktør der tager et unix timestamp som argument - det skulle lige være til at klare :-)

nemmere og billigere en en 64bit implemnetation, med tilhørenede styresystem og maskine ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester