Avatar billede -jesper- Nybegynder
16. februar 2006 - 00:38 Der er 10 kommentarer og
1 løsning

Unixtime eller lignende i ASP

Hejsa,

Et hurtigt spørgsmål til alle Jer :)

Findes der en tilsvarende dato/tids-enhed i ASP som f.eks. php's UnixTime? Altså en måde hvorpå man kan få et tal (dette tilfælde antal sekunder fra 1/1-1970 00:00:00 til når funktionen kaldes)?

Kan godt forestille mig en algoritme som kan skabe tallet, men jeg skal også bruge en funktion som kan fortælle mig det præcise klokkeslet og dato udfra en gemt værdi, dermed skal der tages højde for skudår, sommertid etc.

Så det korte spørgsmål - Findes der tilsvarende dato/tids-funktion i ASP som php's behandling af UnixTime?

Hvis ikke - er der nogen, der har fundet nogen på Nettet et sted?

Håber det giver mening :)

Hilsen,
Jesper
Avatar billede tofte Juniormester
16. februar 2006 - 00:54 #1
Kender ikke UnixTime, men hvis du skal bruge antal sekunder siden en given dato, kan du bruge DateDiff
<%
startDate=cDate("1/1-1970 00:00:00")
response.Write DateDiff("S", startDate,now()) %>
Avatar billede -jesper- Nybegynder
16. februar 2006 - 10:28 #2
Okay, alletiders.. Kan man så ud fra ovenstående resultat "regne tilbage" og få hvilken dato og klokkeslet ud af det?
Avatar billede Slettet bruger
16. februar 2006 - 15:35 #3
Jeps! Her er der et script som kan regne tilbage efter din UnixTid...
<%
AntalSekunder = 86400
startDate=cDate("1/1-1970 00:00:00")
UnixTime = DateDiff("S", startDate,now())
diff = UnixTime-AntalSekunder

Tid = DateAdd("s", diff, startDate)
Response.Write Tid
%>
Variablen "AntalSekunder" skal du give en værdi efter antallet af sekunder du vil regne tilbage...

- Sig til hvis du skal have lavet det til en function...

\Dan
Avatar billede -jesper- Nybegynder
16. februar 2006 - 15:45 #4
Hej Dan..

Ja, meget gerne - hvis du gider? :)

Jeg skal bruge det så jeg kan gemme en event i en database med tidsvariablen på. Dermed kan der sorteres i tabellen.

Dernæste bruger jeg så den gemte tidsværdi til at lave en liste over de 10 seneste events, som så vises på hjemmesiden og brugeren kan klikke på hver af dem respektivt for en handling. På denne liste skal tidsværdien så kunne omskrives tilbage til noget der giver mening.

Altså..

16 februar 2006 kl. 15:42 uploader jeg et billede med en kommentar på. Denne værdi omskrives til antal sekunder fra f.eks. 1/1-1970 00:00:00. Værdien gemmes sammen med filnavnet i databasen.

På en liste over "de sidste 10 events" står min upload nu øverst da der udtrækkes fra databasen sorteret efter størrelse af tal. Tallet omskrives til dato så der står:

"Filnavn" uploadet af Jesper, d. 16 februar 2006 15:42

Det er sådan nogle funktionaliteter jeg leder efter :)
Avatar billede Slettet bruger
16. februar 2006 - 16:14 #5
- Jamen den kommer her så:
<%
function tid(streng)
tid = streng
    if (tid <> "" AND isnumeric(tid)) then
startDate=cDate("1/1-1970 00:00:00")
UnixTime = DateDiff("S", startDate,now())
diff = UnixTime-tid
tid = DateAdd("s", diff, startDate)
    else
tid = ""
    end if
end function
%>
<%="" & tid("86400") & ""%>

Så skal du bare angive i den sidste linie hvor mange sekunder vi skal regne tilbage...

\Dan
Avatar billede -jesper- Nybegynder
18. februar 2006 - 23:42 #6
Hej igen, Dan..

Nu har jeg forsøgt at lave en implementering af din funktion efter bedste overbevisning og den fungerer også.

Dog fungerer den ikke helt som ved den tidsbehandling jeg er vant til.

Tallet unixtime for 1970 1/1 00:00:00 er 0 sekunder
og dags dato er så pokkers meget større, f.eks. 1140303306

så funktionen skal returnere:
1970 01/01 00:00, hvis kaldet hedder tid(0)
2006 18/02 11:55 etc, hvis kaldet heder tid(1140303306)

Jeg har selv prøvet at rykke rundt på variablerne, men jeg kan ikke ramme rigtigt :) Vil du hjælpe med den sidste ting?
Avatar billede -jesper- Nybegynder
18. februar 2006 - 23:54 #7
Hov, det lykkedes alligevel.. Godt nok en lidt besværlig måde bare fordi jeg er vant til at regne i sekunder fra php's time(). Den er bare så nem at manipulere med, men måske findes der nok en lidt nemmere løsning :)

Tak for hjælpen, Dan - smid et svar hvis du vil ha' point?
Avatar billede Slettet bruger
19. februar 2006 - 00:06 #8
OK! Godt du fik det til at virke...

- Smider her et svar...

og sig til hvis du skal have videre hjælp, med den her (i mine øjne) noget besværlige UnixTime...

\Dan
Avatar billede Slettet bruger
19. februar 2006 - 00:09 #9
Så har jeg lige et spørgsmål til dig - mest bare for nysgerrighedens skyld:

Hvorfor i alverden starter UnixTime den 1/1-1970???

Skal det bare forstås som om dette er tidernes morgen for php-verden eller hvordan?

- Og i så fald, har man ikke et problem så hvis man med UnixTime vil regne tilbage til et tidspunkt før 1/1/1970? Som for eksempel hvis man vil vide hvor længe det er siden Gravbaldemanden blev født? ;-)

\Dan
Avatar billede -jesper- Nybegynder
19. februar 2006 - 00:17 #10
Godt spørgsmål! Jeg mente at det var noget med at de bare startede en ny tidsregning der, men en hurtig søgning på google førte mig hertil:

http://en.wikipedia.org/wiki/Unix_epoch

Så det er åbenbart "tidsalderen" for Unix maskinen og så er det den dato der danner basis for tidsregningen :) Nu har jeg primært arbejdet med php før, og der er den fantastisk nem at arbejde/manipulere med set i forhold til det vi lige har lavet her, men der findes nok en LANGT nemmere løsning i ASP også, som jeg bare ikke har luret :)
Avatar billede Slettet bruger
19. februar 2006 - 00:31 #11
Mange tak for dit svar jesper!

- hmm... Men i mine øjne, som asp-fan så har jeg lidt svært ved at se fordelen ved UnixTime og den måde at beregne tid på...

- Og ja... i asp synes jeg i hvert fald det er MEGET nemmere at "styre" og beregne tiden...

- Bliver det hele ikke bare mere uoverskueligt og mere besværligt at skulle regne X antal sekunder fra 1/1/1970? Og hvad er formålet egentlig? For man ville jo aldrig bruge den tidsregning til andet... Altså vi mennesker kan vel næppe bruge UnixTime til noget i vores hovede... Det bliver i hvert fald et alt for stort regnestykke for mig hvis jeg for eksempel prompte skulle kunne svare på hvilken dato og klokkeslæt 999999 sekunder fra 1/1/1970 er...

- Nå, men, "over and out" herfra...

og tak for point!

\Dan
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
Kurser inden for grundlæggende programmering

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



IT-JOB