2011-08-02 9 views
9

Mam to zapytanie MySQL, które zwraca dwie daty (które są oba sformatowane jako a-m-Y). Teraz chcę przetłumaczyć tę datę na mój własny język (język duński). Jak mogę to zrobić. Próbowałem już zarówno funkcji setlocale(), jak i strftime(), ale to nie zadziała. Wiem, że to bardzo podstawowe pytanie, ale naprawdę potrzebuję pomocy. Wielkie dzięki!Zmień język dla daty w php

Odpowiedz

1

Nie sądzę, że funkcja date() jest wystarczająco rozwinięta dla ciebie.

Zamiast tego, polecam spojrzeć w klasie IntlDateFormatter(cytując):

Data Formatter jest beton klasy, która umożliwia zależne od ustawień lokalnych formatowania/parsowanie daty z użyciem wzorów sznurkowych i/lub konserwy wzorów.

Istnieje kilka przykładów na ręcznym stronie IntlDateFormatter::format(), gdzie ta metoda służy do wyświetlania daty w dwóch różnych językach, po prostu ustawiając żądaną lokalizacyjnych.


1. dołączane do PHP> = 5,3

+0

Tha t wygląda na skomplikowaną: D, okej, przyjrzę się temu. Nie mogę zrozumieć, że zmiana języka może być trudna :) – Emil

+0

Cóż, musisz mieć "coś", co może wygenerować ciąg w odpowiednim języku - co oznacza znajomość słów, ich kolejności, ... i to nie jest łatwe zadanie. –

6

Zastosowanie setlocale i strftime razem:

setlocale(LC_TIME, array('da_DA.UTF-8','[email protected]','da_DA','danish')); 
echo strftime("%A"); // outputs 'tirsdag' 

działa na moim instalacji PHP na Windows.

+1

Ale czy mogę wyprowadzać zmienne za pomocą tej metody? – Emil

+0

Co masz na myśli? Jakie zmienne chcesz wyprowadzić? –

+0

Przechowuję dane daty z zapytania w zmiennych. Nie chcę wyprowadzać aktualnej daty ... – Emil

-1

Jeśli próbujesz konwertować datetime spróbuj tego:

$fecha = $dateConsulta->format('d-M-Y'); 
$fecha = str_replace('Jan','Ene',$fecha); 
$fecha = str_replace('Apr','Abr',$fecha); 
$fecha = str_replace('Aug','Ago',$fecha); 
$fecha = str_replace('Dec','Dic',$fecha); 
1

stwierdziliśmy, że setlocale nie są wiarygodne, ponieważ jest on ustawiony na proces , a nie na wątek (w podręczniku wspomniano o tym). Oznacza to, że inne uruchomione skrypty mogą w każdej chwili zmienić ustawienia narodowe. Rozwiązaniem jest użycie IntlDateFormatter z rozszerzenia php intl.

  • Install intl jeśli necesarry (ubuntu): sudo apt-get install php5-intl

  • Instalacja locale chcesz użyć (używam włoski jako przykład): sudo locale-gen it_IT

  • Generowanie lokalnie sformatowaną datę :

$fmt = new \IntlDateFormatter('it_IT', NULL, NULL); 
$fmt->setPattern('d MMMM yyyy HH:mm'); 
// See: http://userguide.icu-project.org/formatparse/datetime for pattern syntax 
echo $fmt->format(new \DateTime()); 
// Output: 6 gennaio 2016 12:10