Avatar billede webegynderen Nybegynder
06. marts 2004 - 11:59 Der er 14 kommentarer og
2 løsninger

Timestamp i dansk format

Hej,
I min database har jeg en masse datoer som er indsat med timestamp. De ser fx. sådan ud 1078570311 = 06/03-04 11:51
Nu ville jeg gerne have der til at stå lørdag d. 6. marts 2004 kl. 11.51
Er det muligt?

Ved godt der er oprettet en masse spørgsmål der ligner dette, men kunne slet ikke finde ud af at bruge løsningerne... Har også fundet ud af at der er noget der hedder unix timestamp og timestamp... Hvad er det jeg bruger?

Lige nu indsætter jeg "the timestamps" i min database ved at skrive dette: strtotime("-0 days") //indsæt

Og trækker ud sådan: echo date("d/m-y H:i", $row[time]);

Er der en lettere måde?
Undskyld de mange spørgsmål... Håber vil hjælpe...
Avatar billede danisher Nybegynder
06. marts 2004 - 12:11 #1
Hejsa

Du kan sætte din dato ind som en timestamp, det synes jeg er lettere. Når du laver en insert, kan du i din SQL query, skrive:
mysql_query("INSERT INTO tabel ("Tekst", now())");

Her antager vi at du har en tabel med en tekst kolonne og så din timestamp som kolonne 2.

Når du så vil hente datoen ud fra databasen kan du også gøre det i SQL sætningen. Så får du hele datoen leveret:
$query = mysql_query("SELECT tekst, DATE_FORMAT(posted, '%d/%m-%Y') as dato, DATE_FORMAT(posted, '%H:%i:%S') as kl FROM tabel");
$row = mysql_fetch_array($query);

$row["dato"] indeholder nu datoen.
$row["kl"] indeholder nu klokken.

Var det noget du kunne bruge?

Mvh
Avatar billede sukos Juniormester
06. marts 2004 - 12:17 #2
Jahh, jeg synes at det er lettere med UNIX timestamp! :O)
Bruger selv dette:

<?php
function tidspunkt($var, $dag=0) {
if(is_numeric($var) && strlen($var) == 10) {
    if(true != $dag) {
        return date("d/m-y - H:i:s", $var);
        }else{
        $dage = array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag");
        $dag = $dage[date("w", $var)];
        return htmlentities($dag) ." d. ". date("d-m-y", $var);
        }
    }else{
    return "n/a";
    }
}
?>

Bliver så til:

<?php
echo tidspunkt(time());
echo"<p>";
echo tidspunkt(time(), 1);
?>
Avatar billede webegynderen Nybegynder
06. marts 2004 - 12:19 #3
Jamen, jeg har jo omkring tusind datoer indsat på denne måde:
strtotime("-0 days") //indsæt
1. Hvordan skal jeg så konvertere det til din timestamp?
2. Hvad hedder den timestamp jeg bruger nu?
3. Hvordan kommer der til at stå: lørdag d. 6. marts 2004 kl. 11.51?
Avatar billede detox Nybegynder
06. marts 2004 - 12:21 #4
1. Synes ikke du skalkonvertere
2. Du bruger unix timestamps
3. Fx:

setlocale(LC_TIME, 'da');
echo strftime('%A d. %d %B %Y kl. %H.%M', $row['time']);
Avatar billede detox Nybegynder
06. marts 2004 - 12:23 #5
Eller måske nærmere:
echo strftime('%A d. %e. %B %Y kl. %H.%M', $tid);
http://dk2.php.net/manual/en/function.strftime.php
Avatar billede detox Nybegynder
06. marts 2004 - 12:23 #6
$tid = $row['time'];
Avatar billede webegynderen Nybegynder
06. marts 2004 - 13:20 #7
detox-> Bruger din oig det ser godt ud... For desværre ikke dagens dato:
lørdag d. . marts 2004 kl. 11.51
Avatar billede detox Nybegynder
06. marts 2004 - 13:32 #8
Næ, det gør jeg heller ikke. Sært det burde da virke iflg. manualen. Alternativt har jeg lavet en lille function der fjerner evt. nul i dagen ved brug af %d:

setlocale(LC_TIME, 'da');
echo dansk($row['time']);

function dansk($stamp) {
    return strftime('%A d. ', $stamp).
        preg_replace("/0?(\d{1,2})/", "$1", strftime('%d', $stamp)).
        strftime('. %B %Y kl. %H.%M', $stamp);
}
Avatar billede webegynderen Nybegynder
06. marts 2004 - 13:48 #9
Mange tak detox nu virker det! Hvordan synes du jeg skal indsætte mit timestamp? Er det fint nok at forsætte med dette: strtotime("-0 days") ?
Avatar billede detox Nybegynder
06. marts 2004 - 13:53 #10
Det virker da, men jeg vil nok foretrække: time()
Avatar billede detox Nybegynder
06. marts 2004 - 13:56 #11
Eller unix_timestamp(), hvis du vil bruge tiden på MySQL serveren.
Avatar billede detox Nybegynder
06. marts 2004 - 14:37 #12
Lige en lille forenkling af funktionen:

function dansk($stamp) {
    return strftime('%A d. ', $stamp).
        (int) strftime('%d', $stamp).
        strftime('. %B %Y kl. %H.%M', $stamp);
}
Avatar billede detox Nybegynder
06. marts 2004 - 14:45 #13
Og ellers velbekommen, du får lige at svar :o)
Avatar billede webegynderen Nybegynder
06. marts 2004 - 15:36 #14
Mange tak for hjælpen, hvis der er andre der vil have point så læg et svar, men jeg bruger detox' svar så han får flest...

En lille detalje: Kan ugedagen (lørdag) komme til at stå med stort?
Avatar billede webegynderen Nybegynder
06. marts 2004 - 15:48 #15
Hmm... Da jeg uploadede det hele til den "rigtige" server blev det hele engelsk...
Denne: setlocale(LC_TIME, 'da'); burde da ordne det...
Avatar billede webegynderen Nybegynder
06. marts 2004 - 16:06 #16
Fandt selv løsningen på mit problem:
setlocale(LC_TIME, 'da_DK');
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