Avatar billede 44fire44 Nybegynder
24. maj 2011 - 08:06 Der er 12 kommentarer og
1 løsning

str_replace for at rette date(); fra engelsk til dansk

Hej eksperter

Jeg sidder og roder med noget str_replace for at få min nyhedsfunktion til at spytte den gemte dato ud på dansk istedet for engelsk

Jeg kan ikke overskue hvor jeg skal smide min str_replace så det fungerer. Hvor skal str_replace være hvis jeg har følgende:


<?php echo date($OptionsVis["date_format"],strtotime($News["publish_date"])); ?> <?php if($OptionsVis["showing_time"]!='') echo date($OptionsVis["showing_time"],strtotime($News["publish_date"])); ?>

Publish_date gemmes som fx: 2011-04-28 12:51:49
date_format er: l, j M, Y
showing_time er: G:i

Outputtet bliver nu: Thursday, 28 Apr 2011 12:52
Outputtet skal være: Torsdag, 28. apr 2011 12:52
Avatar billede majbom Novice
24. maj 2011 - 08:40 #1
prøv at kig på setlocale() og strftime()
Avatar billede 44fire44 Nybegynder
24. maj 2011 - 08:55 #3
Joo tak :) Nu har jeg forsøgt mig lidt med setlocale, men jeg får ingen reaktion når jeg smider det ind i scriptet

strtotime / strftime defineres forskelligt, ikke? Hvis ja, så vil det være et pænt omstændigt arbejde at skulle rette det på hele siden da resten også er lavet med strtotime

Det det da forkert at lave det med str_replace? :)
Avatar billede The_Buzz Novice
24. maj 2011 - 09:16 #4
Spørgsmål:
Udvikler du på WAMP eller XAMPP på en windows maskine? Der vil Setlocale ikke virke - men det VIRKER på linux maskiner som langt langt de fleste hosts har. Gigahost.dk One.dk osv.

På Windows:
Quote: "On Windows, setlocale(LC_ALL, '') sets the locale names from the system's regional/language settings (accessible via Control Panel)." http://php.net/manual/en/function.setlocale.php
Avatar billede The_Buzz Novice
24. maj 2011 - 09:20 #5
strtotime = String to time = vil give en UNIX timestamp
strftime = String from time = Vil give en dato FRA en unix timestamp

Bindegarnet mellem dem - er Unix timestamp, og forhåbentligt en korrekt formateret MySQL timestamp YYYY-MM-DD hh:mm:ss

Datoer i PHP & MySQL: http://phptips.dk/Datoer_i_PHP_og_MySQL.tip
Avatar billede 44fire44 Nybegynder
24. maj 2011 - 09:40 #6
er det så helt forkert at:
<?php echo date($OptionsVis["date_format"],strtotime($News["publish_date"])); ?>

burde rettes til

<?php echo strftime("%A den %e. %B %Y",$News["publish_date"]); ?>

og "setlocale(LC_ALL, 'da_DK');" skal smides ind øverst i min index.php?
Avatar billede The_Buzz Novice
24. maj 2011 - 09:45 #7
Ser rigtigt ud efter min mening, men på windows miljø skal det være
setlocale(LC_ALL, '');
og når du så skifter til linux skal det være
setlocale(LC_ALL, 'da_DK');
Avatar billede 44fire44 Nybegynder
24. maj 2011 - 09:51 #8
Det er dog på et Linuxmiljø :) - så LC_ALL virker fint nu

MEN! - nu smider den torsdag d. 1. januar 1970 ud istedet for den rigtige dato som burde være: torsdag d. 28. april 2011


input i databasen er en datetime med value: 2011-04-28 12:51:49
Avatar billede The_Buzz Novice
24. maj 2011 - 10:28 #9
strtotime

<?php echo strftime("%A den %e. %B %Y",strtotime($News["publish_date"])); ?>
Avatar billede 44fire44 Nybegynder
24. maj 2011 - 10:36 #10
Arrh selvfølgelig - inputtet skal konverteres først ;)

Perfekt, det løste problemet! Smid endelig et svar og du får point som fortjent :)

- og tusinde tak for hjælpen
Avatar billede The_Buzz Novice
24. maj 2011 - 10:37 #11
Svar :)
Avatar billede showsource Seniormester
24. maj 2011 - 18:21 #12
Du kan evt. også gøre det i ren sql:


mysql_query("set lc_time_names='da_DK'") or die (mysql_error());

$idag = mysql_query("SELECT DATE_FORMAT(NOW(), '%W %e. %b %Y %H:%i') as dato") or die (mysql_error());

echo ucfirst(mysql_result($idag,0,"dato"));

hvor NOW() så skal udskiftes med dit feltnavn med datoen.
Avatar billede 44fire44 Nybegynder
27. maj 2011 - 06:27 #13
Hej Steffen!

Længe siden :) Ja, det var bestemt også en mulighed, men jeg valgte Buzz'es løsning som virker fortrinligt :)

Men tak for input+svar :)

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

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