/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Konvertere sekunder til HH:mm:ss
Fra : Jimmy


Dato : 24-07-03 09:10

Hej

Jeg har fundet følgende funktion på nettet, som kan konvertere et input i
sekunder til timer:minutter:sekunder.

-----
function hhmmss ($seconds)
{
$hrs = floor ($seconds / 3600);

$min = $seconds - ($hrs * 3600);
$min = floor ($min / 60);

$sec = $seconds - ($hrs * 3600) - ($min * 60);

return str_pad($hrs,2,'0',STR_PAD_LEFT) . ':' .
str_pad($min,2,'0',STR_PAD_LEFT) . ':' .
str_pad($sec,2,'0',STR_PAD_LEFT);
}

-----

Men kan det passe, at man skal skrive sin egen funktion til dette?
Jeg kunne forestille mig, at php allerede havde dette indbygget?

Mvh
Jimmy



 
 
Nezar Nielsen (24-07-2003)
Kommentar
Fra : Nezar Nielsen


Dato : 24-07-03 10:11

Jimmy wrote:
> Hej
>
> Jeg har fundet følgende funktion på nettet, som kan konvertere et input i
> sekunder til timer:minutter:sekunder.
....
> Men kan det passe, at man skal skrive sin egen funktion til dette?

Nej.

> Jeg kunne forestille mig, at php allerede havde dette indbygget?

date("H:i:s", $seconds);

læs selv videre på http://dk.php.net/date

--
Mvh. Nezar Nielsen
http://fez.dk/


Jimmy (24-07-2003)
Kommentar
Fra : Jimmy


Dato : 24-07-03 10:15


"Nezar Nielsen" <tumpen@fez.dk> wrote in message
news:bfo7ru$h4vsd$1@ID-179598.news.uni-berlin.de...
> Jimmy wrote:
> > Hej
> >
> > Jeg har fundet følgende funktion på nettet, som kan konvertere et input
i
> > sekunder til timer:minutter:sekunder.
> ...
> > Men kan det passe, at man skal skrive sin egen funktion til dette?
>
> Nej.

Nej det mente jeg heller ikke man kunne byde en programmør


> > Jeg kunne forestille mig, at php allerede havde dette indbygget?
>
> date("H:i:s", $seconds);

Den giver faktisk ikke det rigtige resultat:

date("H:i:s", (1059032800 - 1059030911))
01:31:29

Men den reelle difference er
00:31:29

Jeg havde prøvet med date, men droppede det da den ikke gav det jeg ville
have den til.

Mvh
Jimmy



Johan Holst Nielsen (24-07-2003)
Kommentar
Fra : Johan Holst Nielsen


Dato : 24-07-03 10:53

Jimmy wrote:
> Den giver faktisk ikke det rigtige resultat:
>
> date("H:i:s", (1059032800 - 1059030911))
> 01:31:29
>
> Men den reelle difference er
> 00:31:29
>
> Jeg havde prøvet med date, men droppede det da den ikke gav det jeg ville
> have den til.

Læs dokumentationen bedre ;)

date("H:i:s", mktime(0,0,(1059032800-1059030911)));

mvh
Johan



Lars Dybdahl (24-07-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 24-07-03 14:30

Jimmy wrote:
> Jeg har fundet følgende funktion på nettet, som kan konvertere et input i
> sekunder til timer:minutter:sekunder.

Nu ved jeg ikke om det er kritisk for dit program - men du skal være
opmærksom på, at der kan være op til 62 sekunder i et minut.

Det er ikke en joke.

Der går 1440 minutter på en dag, og en dag er en jordomdrejning. Et sekund
er ikke defineret ud fra astronomi, men ud fra en atomar reaktion (noget
med lysets hastighed osv.) Det betyder, at de to tidsregninger nogle gange
løber skævt for hinanden. Der bliver derfor engang imellem indsat et
skudsekund den 1/1 eller den 1/7, og ifølge standarden kan der være op til
to skudsekunder på en gang. I praksis er det dog kun 1 sekund hver gang, da
fejlen ligger på under 2 sekunder om året.

Her skal man være opmærksom på, at Linux rent faktisk, i modsætning til
POSIX standarden, bruger skudsekunder. Når man afspørger tiden i Linux, får
man at vide, hvor mange sekunder der er gået siden 1. januar 1970 kl. 00:00
UTC, og her er der over 60 sekunder mere end hvis der ikke fandtes
skudsekunder.

Hvis du derfor påregner at lave din omregning ud fra Linux'ens
tidsangivelse, og dit program skal fungere perfekt omkring 1/1 og 1/7 ved
midnat, så skal du tage hensyn til dette.

Jeg ved ikke om FreeBSD kan finde ud af skudsekunder, men Windows kan i
hvert fald ikke.

Lars.

--
Freelance programmør
Programmering mod timebetaling

Jimmy (24-07-2003)
Kommentar
Fra : Jimmy


Dato : 24-07-03 15:19


"Lars Dybdahl" <lars@dybdahl.dk> wrote in message
news:3f1fdf3e$0$5177$edfadb0f@dread11.news.tele.dk...
> Jimmy wrote:
> > Jeg har fundet følgende funktion på nettet, som kan konvertere et input
i
> > sekunder til timer:minutter:sekunder.
>
> Nu ved jeg ikke om det er kritisk for dit program - men du skal være
> opmærksom på, at der kan være op til 62 sekunder i et minut.
>
> Det er ikke en joke.




[klip]

> Her skal man være opmærksom på, at Linux rent faktisk, i modsætning til
> POSIX standarden, bruger skudsekunder. Når man afspørger tiden i Linux,
får
> man at vide, hvor mange sekunder der er gået siden 1. januar 1970 kl.
00:00
> UTC, og her er der over 60 sekunder mere end hvis der ikke fandtes
> skudsekunder.
>
> Hvis du derfor påregner at lave din omregning ud fra Linux'ens
> tidsangivelse, og dit program skal fungere perfekt omkring 1/1 og 1/7 ved
> midnat, så skal du tage hensyn til dette.

Interessant.
Bliver der undertiden trukket nogle sekunder fra igen?
Hvis ikke, hvor mange sekunder mere er Unix-timestamp i forhold til uden
skudsekunder?
(Du skriver over 60, men hvor mange er det i praksis?)

Mit program er ikke kræsen med sekunderne, men i hvilke tilfælde kan man
forestille sig at det ville gøre en forskel? I php-verdenen altså.

mvh
Jimmy



Lars Dybdahl (24-07-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 24-07-03 18:54

Jimmy wrote:
> Bliver der undertiden trukket nogle sekunder fra igen?

Nej.

> Hvis ikke, hvor mange sekunder mere er Unix-timestamp i forhold til uden
> skudsekunder?

Det kan jeg ikke huske, men det ligger i størrelsesordenen 1-2 minutter. Jeg
er i øvrigt ikke klar over, hvordan det håndteres i praksis mht. sntp osv.

> Mit program er ikke kræsen med sekunderne, men i hvilke tilfælde kan man
> forestille sig at det ville gøre en forskel? I php-verdenen altså.

Jeg har lavet et persontællesystem der viser data fra en database. Alle
tidspunkterne gemmes med Linux timestamp i databasen. Hvis en kunde testede
systemet og fandt ud af, at uret går forkert, ville de brokke sig. Der vil
også være kunder, der brokker sig, hvis tællingerne blev placeret bare et
par sekunder forkert, f.eks. på den forkerte side af midnat, da systemet
tidssynkroniserer over internettet og derfor angives som gående præcist.

Lars.

--
Freelance programmør
Programmering mod timebetaling

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste