|
| 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
| |
|
|