Gå til innhold

Hvorfor får jeg en 1970-dato ved norsk dat-konv.?


Anbefalte innlegg

Denne koden gjør at jeg får datoen "torsdag 01. januar 1970" som output... Det øvrige stemmer nok, siden time() istedet for $tid gir dagens dato.

 

Det jeg altså skal ha er datoen som er lagret som timestamp med navnet "tid" i databasen ut med norsk månedsnavn...

 

Noen som kan fortelle hvordan jeg får ut dette?

 

<?php


$res = mysql_query("SELECT * FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1");

while($row = mysql_fetch_assoc($res)){

setlocale(LC_ALL, 'no_NO.ISO8859-1');

echo "<a href='news.php?id=".$row['id']."'>".$row['tid']."</a><br><br>";
echo strftime ("%A %d. %B %Y", $tid);
}
?>

Lenke til kommentar
Videoannonse
Annonse

Hei igjen!

 

Takk for svar.

 

Jeg tok en kikk på denne, og implementerte den i stedet. Men jeg får fremdeles 1. januar 1970 som output der jeg vil ha månedsnavnet fra nyheten på norsk format...

 

For å teste litt satte jeg inn både den originale linja mi, strftime time() og med $tid.

 

<?php

$res = mysql_query("SELECT *, FROM_UNIXTIME(UNIX_TIMESTAMP(), ('%e.%m.%Y')) AS tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1");

while($row = mysql_fetch_assoc($res)){

setlocale(LC_ALL, 'no_NO.ISO8859-1');

echo "<a href='/news.php?id=".$row['id']."'>".$row['tid']."</a><br>";
echo strftime ("%A %d. %B %Y", $tid);
echo strftime ("%A %d. %B %Y", time());
}
?>

 

Dette gir denne outputen:

 

4.10.2004

torsdag 01. januar 1970

mandag 04. oktober 2004

 

Det er altså den i midten som er problemet. Jeg vil den øverste linja - 4.10.2004 - på formen 4. oktober 2004.

 

Det hjelper forøvrig ikke å sette inn %B i stedet for %m i UNIX_TIMESTAMP() i SELECT. Den bare printes som B...

 

EDIT: Nå oppdager jeg i ettertid at denne funksjonen jo slett ikke henter datoen fra databasen, så jeg måtte gå tilbake til date_format!!

Endret av Glenn'ern
Lenke til kommentar

christt:

 

Nå begynner jeg bli frustrert her.

 

Du mener sånn ikke sant:

<?php

$res = mysql_query("SELECT *, date_format(tid, '%e.%m.%Y') as tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1");

while($row = mysql_fetch_assoc($res)){

setlocale(LC_ALL, 'no_NO.ISO8859-1');

echo "<a href='/news.php?id=".$row['id']."'>".$row['tid']."</a><br>";
echo strftime ("%A %d. %B %Y", $row['tid']);
echo strftime ("%A %d. %B %Y", time());
}
?>

 

Ikke for å svare uhøflig, men tror du ikke jeg har prøvd det?

 

Har prøvd $row['tid'] og ".$row['tid']." og '$row['tid']' og $row["tid"].. Du skjønner tegninga. 1. januar 1970 på alle sammen... :mad:

 

<?php

$res = mysql_query("SELECT *, date_format(tid, '%e.%m.%Y') as tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1");

while($row = mysql_fetch_assoc($res)){

setlocale(LC_ALL, 'no_NO.ISO8859-1');

echo "<a href='/news.php?id=".$row['id']."'>".$row['tid']."</a><br>";
echo strftime ("%A %d. %B %Y", $row['tid']);
echo strftime ("%A %d. %B %Y", $row[tid]);
echo strftime ("%A %d. %B %Y", $row["tid"]);

}
?>

 

gir

 

3.10.2004

torsdag 01. januar 1970torsdag 01. januar 1970torsdag 01. januar 1970

 

PS: Jeg måtte forlate UNIX_TIMESTAMP da den bare hentet dagens dato - jeg fikk ikke en gang datoen i databsen på det "feile" formatet.

Endret av Glenn'ern
Lenke til kommentar

Som Torbjørn sier, så er mysql sin datefunksjon den beste løsningen her. Vil anbefale deg å sette inn NOW() i tid når du setter inn datoen. Også bytter du om på tid til date (husker ikke hva det het). Så kan du heller formatere datoen når du henter ut tiden.

Lenke til kommentar

Yep. "tid" er allerede satt som timestamp i databasen. Den setter også alltid Now(), så problemet ligger nok ikke der heller...

 

Fra structure:

Field Type Null Default

tid timestamp(14) Yes NULL

Endret av Glenn'ern
Lenke til kommentar

Siden han ønsker navnene på norsk så kan det være lurt å beholde løsningen han allerede har.

 

Bruk da fortsatt UNIX_TIMESTAMP(), men ikke på den måten du har gjort. Bruk heller eksempelet jeg skrev tidligere. Hvis ikke det fungerer så kjør kun denne: "SELECT UNIX_TIMESTAMP(tid) FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1" - og post variabelen her.

Lenke til kommentar

Helt rått, O Store Spørsmålstegn!

 

Jeg jobbet videre med den linja du kom med nå, og nuh funker det.

 

Jeg legger ut koden som virker for future reference, som det heter.

 

 

<?php
$res = mysql_query("SELECT *, UNIX_TIMESTAMP(tid) AS tid FROM news1 WHERE kategori=04 ORDER BY tid DESC limit 1");
setlocale(LC_ALL, 'no_NO.ISO8859-1');

while($row = mysql_fetch_assoc($res)){

echo "<a href='/news.php?id=".$row['id']."'>";
echo strftime ("%A %d. %B %Y", $row[tid]);
echo "</a><br>";
}
?>

 

Jeg lurer på om det kan han noe med at jeg flyttet setlocale(LC_ALL, 'no_NO.ISO8859-1'); litt opp også.....?

Endret av Glenn'ern
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...