22. juni 2006 - 23:41
Der er
9 kommentarer og 1 løsning
Dansk måned og dag i stedet for engelsk
Hej eksperter Jeg har hentet et booking system som jeg synes er smart men der er et problem. Det bruger engelske månedsnavne og dag navne. Selve filen hvor tid og dato styres ses under den stiplede linje. Hvordan får jeg den til at skrive danske måneder og danske navne på dage. Den benytter date("l") og date("F") til at få de engelske. Har kigget på om det måske er setlocale jeg skal bruge men synes ikke jeg kan se hvordan den virker. Så hvordan får jeg den til at benytte danske dag og månedsnavne? -------------------------------------------------------------- // Define Current & Selected Date Constants // Today's Date Data $tmp_todays_dates = date("j M Y|l j F, Y"); list($tmp_today, $tmp_shortstr, $tmp_longstr) = explode("|", $tmp_todays_dates); define('TODAYS_DATE', $tmp_today); // YYYY-MM-DD list($tmp_year, $tmp_month, $tmp_day) = explode("-", $tmp_today); define('TODAYS_DATE_YEAR', $tmp_year); // 4 Digit define('TODAYS_DATE_MONTH', $tmp_month); // 2 Digit define('TODAYS_DATE_DAY', $tmp_day); // 2 Digit define('TODAYS_DATE_SHORTSTR', $tmp_shortstr); // 21 Mar 2003 define('TODAYS_DATE_LONGSTR', $tmp_longstr); // Saturday January 25, 2003 // Selected Date Data @list($sel_year, $sel_month, $sel_day) = explode("-", $_REQUEST['date']); if (!checkdate($sel_month+0, $sel_day+0, $sel_year+0)) { $_REQUEST['date'] = TODAYS_DATE; list($sel_year, $sel_month, $sel_day) = explode("-", $_REQUEST['date']); } if (strlen($sel_year) == 2 && $sel_year <= 69) { $sel_year += 2000; } define('SELECTED_DATE_YEAR', sprintf("%04d", $sel_year)); define('SELECTED_DATE_MONTH', sprintf("%02d", $sel_month)); define('SELECTED_DATE_DAY', sprintf("%02d", $sel_day)); define('SELECTED_DATE', SELECTED_DATE_YEAR . '-' . SELECTED_DATE_MONTH . '-' . SELECTED_DATE_DAY); $_REQUEST['date'] = SELECTED_DATE; $tmp_todays_dates = date("j M Y|l j F, Y", mktime(1, 0, 0, SELECTED_DATE_MONTH, SELECTED_DATE_DAY, SELECTED_DATE_YEAR)); list($tmp_shortstr, $tmp_longstr) = explode("|", $tmp_todays_dates); define('SELECTED_DATE_SHORTSTR', $tmp_shortstr); // 21 Mar 2003 define('SELECTED_DATE_LONGSTR', $tmp_longstr); // Saturday, January 25, 2003 // Selected Date Data - Previous/Next Day, Month, & Year Data define('PREVIOUS_DAY_DATE', add_delta_ymd(SELECTED_DATE, 0, 0, -1)); define('NEXT_DAY_DATE', add_delta_ymd(SELECTED_DATE, 0, 0, 1)); define('PREVIOUS_MONTH_DATE', add_delta_ymd(SELECTED_DATE, 0, -1, 0)); define('NEXT_MONTH_DATE', add_delta_ymd(SELECTED_DATE, 0, 1, 0)); define('PREVIOUS_YEAR_DATE', add_delta_ymd(SELECTED_DATE, -1, 0, 0)); define('NEXT_YEAR_DATE', add_delta_ymd(SELECTED_DATE, 1, 0, 0)); // Create the schedule table data for the selected month date (year and month). include_once("booking_db_fns.php"); $res = create_date_time_schedule_data(SELECTED_DATE, $_REQUEST['loc']); ?>
Annonceindlæg fra Pax8
Så vidt er date() ikke afhængig af setlocale, hvilket betyder at du ikke får danske dage og måneder ud i din kalender.
I stedet kan du gøre det, at du ændrer date() til strftime(). Sidst nævnte læner sig op ad setlocale, så du kan få danske dage og måneder ud.
Se mere på
http://dk.php.net/manual/da/function.strftime.php
Men der står: Month and weekday names and other language dependent strings respect the current locale set with setlocale(). Hvordan gør jeg så det? For bruger jeg f.eks. bare echo strftime("%A"); så skriver den Thursday
Det er også rimligt nemt at implementere selv: $names = array("søndag", "mandag", "tirsdag"); //Osv $d = getdate(); print("I dag er det " . $names[$d['wday']]);
Hmm lyder meget enkelt, men lidt svært at komme igang i forhold til ovensående..... Kan du evt hjælpe mig lidt igang så jeg forstår det? Skriver lige arrays så du ikke skal spilde tid på det. $dag = array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"); $maned = array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December"); På forhånd tak
Mente mere med at komme igang i denne fil ;): // Define Current & Selected Date Constants // Today's Date Data $tmp_todays_dates = date("j M Y|l j F, Y"); list($tmp_today, $tmp_shortstr, $tmp_longstr) = explode("|", $tmp_todays_dates); define('TODAYS_DATE', $tmp_today); // YYYY-MM-DD list($tmp_year, $tmp_month, $tmp_day) = explode("-", $tmp_today); define('TODAYS_DATE_YEAR', $tmp_year); // 4 Digit define('TODAYS_DATE_MONTH', $tmp_month); // 2 Digit define('TODAYS_DATE_DAY', $tmp_day); // 2 Digit define('TODAYS_DATE_SHORTSTR', $tmp_shortstr); // 21 Mar 2003 define('TODAYS_DATE_LONGSTR', $tmp_longstr); // Saturday January 25, 2003 // Selected Date Data @list($sel_year, $sel_month, $sel_day) = explode("-", $_REQUEST['date']); if (!checkdate($sel_month+0, $sel_day+0, $sel_year+0)) { $_REQUEST['date'] = TODAYS_DATE; list($sel_year, $sel_month, $sel_day) = explode("-", $_REQUEST['date']); } if (strlen($sel_year) == 2 && $sel_year <= 69) { $sel_year += 2000; } define('SELECTED_DATE_YEAR', sprintf("%04d", $sel_year)); define('SELECTED_DATE_MONTH', sprintf("%02d", $sel_month)); define('SELECTED_DATE_DAY', sprintf("%02d", $sel_day)); define('SELECTED_DATE', SELECTED_DATE_YEAR . '-' . SELECTED_DATE_MONTH . '-' . SELECTED_DATE_DAY); $_REQUEST['date'] = SELECTED_DATE; $tmp_todays_dates = date("j M Y|l j F, Y", mktime(1, 0, 0, SELECTED_DATE_MONTH, SELECTED_DATE_DAY, SELECTED_DATE_YEAR)); list($tmp_shortstr, $tmp_longstr) = explode("|", $tmp_todays_dates); define('SELECTED_DATE_SHORTSTR', $tmp_shortstr); // 21 Mar 2003 define('SELECTED_DATE_LONGSTR', $tmp_longstr); // Saturday, January 25, 2003 // Selected Date Data - Previous/Next Day, Month, & Year Data define('PREVIOUS_DAY_DATE', add_delta_ymd(SELECTED_DATE, 0, 0, -1)); define('NEXT_DAY_DATE', add_delta_ymd(SELECTED_DATE, 0, 0, 1)); define('PREVIOUS_MONTH_DATE', add_delta_ymd(SELECTED_DATE, 0, -1, 0)); define('NEXT_MONTH_DATE', add_delta_ymd(SELECTED_DATE, 0, 1, 0)); define('PREVIOUS_YEAR_DATE', add_delta_ymd(SELECTED_DATE, -1, 0, 0)); define('NEXT_YEAR_DATE', add_delta_ymd(SELECTED_DATE, 1, 0, 0)); // Create the schedule table data for the selected month date (year and month). include_once("booking_db_fns.php"); $res = create_date_time_schedule_data(SELECTED_DATE, $_REQUEST['loc']); ?>
Så tror jeg at jeg står af... Det er over er år siden jeg har arbejdet med php, og jeg er desuden ikke alt for god... ;-) Det var bare om du kunne bruge den smule der :-) MVH /Louv
Løsningen er: setlocale(LC_TIME, 'da'); $tmp_todays_dates = strftime("%Y-%m-%d|%d %b %Y|%A %B %d, %Y"); $tmp_todays_dates = strftime("%d %b %Y|%A %B %d, %Y", mktime(1, 0, 0, SELECTED_DATE_MONTH, SELECTED_DATE_DAY, SELECTED_DATE_YEAR)); Og date skal rettes til strftime() flere steder. Og et svar!
Takker for hjælpen over messenger jakobdo :)
24. juni 2006 - 17:10
#10
Selv tak, og tak for point.
Vi tilbyder markedets bedste kurser inden for webudvikling