Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] mktime, date - dodanie nazw miesięcy po polsku
Forum PHP.pl > Forum > Przedszkole
monsarrat
Witam, proszę o dopisanie funkcji pozwalającej na wyświetlanie polskie nazwy miesięcy. Z góry dziękuję za pomoc.

  1.  
  2. <?php
  3. $month = (isset($_GET["m"]) && is_numeric($_GET["m"])) ? (int)$_GET["m"] : "";
  4. $year = (isset($_GET["y"]) && is_numeric($_GET["y"])) ? (int)$_GET["y"] : "";
  5.  
  6. if (strcmp($month, "") == 0 || strcmp($year, "") == 0)
  7. {
  8. $from = time();
  9. $info = getdate($from);
  10. $month = $info["mon"];
  11. $year = $info["year"];
  12. }
  13.  
  14. $from = mktime(0, 0, 0, $month, 1, $year);
  15. $to = mktime(0, 0, 0, ($month + 1 == 13) ? 1 : $month + 1, 1, ($month + 1 == 13) ? $year + 1 : $year);
  16.  
  17. ?>
  18.  
  19.  
  20. <h2><?php echo date('F Y', $from);?></h2>
  21.  
nospor
jesli miesiac == 1 echo styczen
jesli miesiac == 2 echo luty
....
jesli miesiac == 12 echo grudzien
skowron-line
Na podstawie ustawień lokalnych
http://pl1.php.net/manual/en/function.setlocale.php
możesz wyświetlić nazwy miesięcy w danym języku
http://pl1.php.net/manual/en/function.strftime.php
Cytat
string strftime ( string $format [, int $timestamp = time() ] )
(patrz przykłady)

Zielonkawy18
Zdecydowanie o wiele lepsze rozwiązanie to:

http://php.net/manual/en/language.types.array.php
monsarrat
hem bawienie sie w if`y to zaśmiecanie kodu w pewnym sensie


próbowąłem dodac na początek kodu php

  1. $arrLocale = array( "pl_PL", "polish_pol" );
  2. setlocale( LC_ALL, $arrLocale );


jednak nie pomogło :/
nospor
Cytat
hem bawienie sie w if`y to zaśmiecanie kodu w pewnym sensie
Ale przynajmniej działa...

Martwisz się o pare ifów, ze niby ci zaśmiecą kod, podczas gdy Twój kod, jest daleki od ideału więć te parę dodatkwych ifów naprawdę by ci nie zaszkodziło.
Tym bardziej że możesz je zamienić na SWICH CASE a całość dodatkowo wstawić w funkcję getMonthName()
skowron-line
  1. setlocale(LC_ALL, 'pl_PL.');
samo pl_PL wystarczy
monsarrat
hem jednak
  1. setlocale(LC_ALL, 'pl_PL.');
nie zadziałało ...

to jak to bezie z tymi IF - nospor co kolega ma dokłądnie na myśli.... ?
nospor
Cytat
to jak to bezie z tymi IF - nospor co kolega ma dokłądnie na myśli.... ?
Nie bardzo rozumiem... przecież ci napisałem co mam na mysli smile.gif Czego nie zrozumiałeś?

  1. function getMonthName($m){
  2. //tutaj moje IF, które zwracają przez return nazwe miesiac
  3. }
  4.  
  5. // a poźniej w kodzie robisz
  6.  
  7. echo getMonthName(11);

i juz
skowron-line
Cytat(monsarrat @ 22.11.2012, 10:58:01 ) *
hem jednak
  1. setlocale(LC_ALL, 'pl_PL.');
nie zadziałało ...

Bezmyślnie skopiowałeś zamiast pokombinować albo zerknąć pod link który podałem
Cytat
setlocale(LC_ALL, 'nl_NL');

ja się machnąłem i kropkę dałem
Cytat
setlocale(LC_ALL, 'pl_PL);
monsarrat
pokombinowałem i roziwzniem jest
  1. setlocale(LC_ALL, 'pl_PL.UTF-8');

konieczne jest danie UTF-8 ze względu na poskie litery ń i ź

w całości działający kod wygląda tak, może komuś sie przyda... :



  1. <?php
  2.  
  3. setlocale(LC_ALL, 'pl_PL.UTF-8');
  4.  
  5. $month = (isset($_GET["m"]) && is_numeric($_GET["m"])) ? (int)$_GET["m"] : "";
  6. $year = (isset($_GET["y"]) && is_numeric($_GET["y"])) ? (int)$_GET["y"] : "";
  7.  
  8. if (strcmp($month, "") == 0 || strcmp($year, "") == 0)
  9. {
  10. $from = time();
  11. $info = getdate($from);
  12. $month = $info["mon"];
  13. $year = $info["year"];
  14. }
  15.  
  16. $from = mktime(0, 0, 0, $month, 1, $year);
  17. $to = mktime(0, 0, 0, ($month + 1 == 13) ? 1 : $month + 1, 1, ($month + 1 == 13) ? $year + 1 : $year);
  18.  
  19. ?>
  20.  
  21. <div align="center">
  22. <hr/>
  23.  
  24.  
  25. <h2><?php echo strftime("%B, %G",$from);?></h2>
  26.  
  27. <div>
  28. <a class="" href="index.php?y=<?php echo $year - 1; ?>&m=<?php echo $month; ?>">Poprzedni Rok</a>
  29. <a class="" href="index.php?y=<?php echo ($month - 1 == 0) ? $year - 1 : $year; ?>&m=<?php echo ($month - 1 == 0) ? 12 : $month - 1; ?>">Poprzedni Miesiąc</a>
  30. <a class="" href="index.php?y=<?php echo ($month + 1 == 13) ? $year + 1 : $year; ?>&m=<?php echo ($month + 1 == 13) ? 1 : $month + 1; ?>">Następny Miesiąc</a>
  31. <a class="" href="index.php?y=<?php echo $year + 1; ?>&m=<?php echo $month; ?>">Następny Rok</a>
  32. <?php
  33. $currentMonthInfo = getdate(time());
  34. ?>
  35.  
  36. <a class="" href="index.php?y=<?php echo $currentMonthInfo["year"]; ?>&m=<?php echo $currentMonthInfo["mon"]; ?>">Aktualny miesiąc</a>
  37. </div>
  38.  
  39.  


Pozdrawiam i dziękuje za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.