[PHP] strftime, maand met hoofdletters?

Pagina: 1
Acties:
  • 412 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 84025

Topicstarter
Ik ben er net achter dat ik met setlocale de taal voor het tonen van datums kan veranderen. Deze kan tonen doormiddel van mktime en strftime.
Dit is wat ik tot nu toe heb:

PHP:
1
2
3
4
5
6
7
<?php
/* zet datum notatie naar Nederlands */
setlocale(LC_ALL, "nl_NL", "nld_nld", "dutch");

$currentmonth = mktime(0, 0, 0, 03, 12 , 2005);
echo strftime("%B", $currentmonth);
?>


Nu laat hij de maand niet met hoofdletters zien. Is dit op te lossen of moet ik hiervoor overgaan op array's en het zelf "beheren"?

Thanks

Acties:
  • 0 Henk 'm!

  • darkrain
  • Registratie: Augustus 2001
  • Laatst online: 23:23

darkrain

Moderator Discord

Geniet

sjaakduhuuhl je hebt gelijk.

Ik dacht dat hij het met hoofdletters liet zien.
Hoofdletters mag toch niet van de nederlandse taal?

[ Voor 178% gewijzigd door darkrain op 31-03-2005 12:00 ]

Tweakers Discord


Acties:
  • 0 Henk 'm!

  • Room42
  • Registratie: September 2001
  • Niet online
Zoiets?

PHP:
1
echo ucfirst(strftime("%B", $currentmonth));


Het is trouwens gewoon gebruikelijk om maanden met kleine letters te schrijven. Niet met hoofdletters.


darkrain, je hebt zijn vraag niet goed gelezen ;)

[ Voor 57% gewijzigd door Room42 op 31-03-2005 11:58 ]

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Acties:
  • 0 Henk 'm!

  • Bram77
  • Registratie: September 2004
  • Laatst online: 10-07-2023
PHP:
1
2
3
4
5
6
7
<?php
/* zet datum notatie naar Nederlands */
setlocale(LC_ALL, "nl_NL", "nld_nld", "dutch");

$currentmonth = mktime(0, 0, 0, 03, 12 , 2005);
echo strtoupper(strftime("%B", $currentmonth));
?>


?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 22:27
Als strftime het niet zelf kan doen kun je nog altijd gebruik maken van een van de andere 100 string functies die PHP rijk is. Zoals bijvoorbeeld ucfirst(), deze functie maakt van de eerste letter van een string een hoofdletter.

Acties:
  • 0 Henk 'm!

Anoniem: 84025

Topicstarter
Thanks Sybr_E-N
ik denk dat het met zoeits op te lossen is, ik ga het direct proberen. Klopt het dat de Nederlandse notering van datums met setlocale dus altijd lowercase is? Of ligt dit aan je server hoe die is ingesteld?

Bedankt.

Acties:
  • 0 Henk 'm!

  • darkrain
  • Registratie: Augustus 2001
  • Laatst online: 23:23

darkrain

Moderator Discord

Geniet

lowercase is volgens de afspraken voor nederlands correct. Dus klopt het.

[ Voor 12% gewijzigd door darkrain op 31-03-2005 12:02 ]

Tweakers Discord


Acties:
  • 0 Henk 'm!

  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
slightly offtopic, het zetten van de locale zoals je dat nu doet is best link vanwege de volgende redenen:
• je weet niet op welk platform je zit te werken, hetgeen belangrijk is voor sommige dingen in strftime (zoals dagnummer).
• je gaat er vanuit dat het zetten van de locale altijd lukt
• je gaat in de problemen komen met kommagetallen bij het gebruik van LC_ALL, vooral icm SQL databases.

ik gebruik dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$phpVersion     = explode(".",phpversion());
$localeCategory = ($phpVersion[0] == 4 && $phpVersion[1] < 2) ? "LC_TIME" : LC_TIME;

$lc = setlocale($localeCategory, 'nld_nld');    
if($lc) {
    define("SITE_DATE_FORMAT", "%A %#d %B %Y");
    define("SITE_SHORT_DATE_FORMAT", "%#d %B %Y");
}
else {
    $lc = setlocale($localeCategory, 'nl_NL');

    define("SITE_DATE_FORMAT", "%A %e %B %Y");
    define("SITE_SHORT_DATE_FORMAT", "%e %B %Y");
}   
define("TRANSLATE_DATES", ($lc == false));


Als het zetten van de locale niet gelukt is (zo heb ik bijvoorbeeld een hoster die op z'n server niet beschikt over de nederlandse locale), dan is TRANSLATE_DATES == true. Ergens anders in m'n code daarom:

PHP:
1
2
3
        if(TRANSLATE_DATES) {
            $days = str_replace (array_keys($GLOBALS['dutchDates']), $GLOBALS['dutchDates'], $days);
        }


die z'n data haalt uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
global $dutchDates;

$dutchDates = array(
    "January"   => "januari",
    "February"  => "februari",
    "March"     => "maart",
    "April"     => "april",
    "May"       => "mei",
    "June"      => "juni",
    "July"      => "juli",
    "August"    => "augustus",
    "September" => "september",
    "October"   => "oktober",
    "November"  => "november",
    "December"  => "december",
    "Monday"    => "maandag",
    "Tuesday"   => "dinsdag",
    "Wednesday" => "woensdag",
    "Thursday"  => "donderdag",
    "Friday"    => "vrijdag",
    "Saturday"  => "zaterdag",
    "Sunday"    => "zondag"
);

[ Voor 42% gewijzigd door Genoil op 31-03-2005 12:44 ]

Pagina: 1