2011-08-02 111 views
9

我有這樣的MySQL查詢,返回兩個日期(這兩者都是格式化爲-M-Y)。現在我想把這個日期翻譯成我自己的語言(丹麥語)。我怎樣才能做到這一點。 我已經嘗試了setlocale()和strftime()函數,但它不起作用。 我知道這是一個非常基本的問題,但我真的需要幫助:)非常感謝!的語言更改日期在PHP

回答

1

我不認爲date()功能十分先進夠你在這裏。

相反,我建議你看一看的IntlDateFormatter(引用)

日期格式化是一個具體的類,使語言環境有關的 格式化的 /解析日期使用模式字符串和/或罐頭 模式。

在手冊頁IntlDateFormatter::format()上有幾個例子,其中該方法用於以兩種不同的語言顯示日期,只需設置所需的語言環境即可。


1.捆綁了PHP> = 5.3

+0

Tha t看起來很複雜:D好的,我會看看它。 我不明白,它可能很難只是改變語言:) – Emil

+0

那麼,你必須有「東西」,可以產生正確的語言字符串 - 這意味着知道的話,他們的順序,..這並不是一件容易的事情。 –

6

使用setlocalestrftime在一起:

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

作品我在Windows上安裝PHP。

+1

但我可以用這種方法輸出變量嗎? – Emil

+0

你是什麼意思?你想輸出什麼變量? –

+0

我將來自查詢的日期數據存儲在變量中。我不想輸出當前日期... – Emil

-1

如果你正在嘗試轉換datetime試試這個:

$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

我發現setlocale是不可靠的,因爲它是每個進程設置,而不是每個線程(手冊提到這一點)。這意味着其他運行腳本可以隨時更改語言環境。解決方案是使用intl php擴展中的IntlDateFormattersudo apt-get install php5-intl

  • 安裝要使用的語言環境(我使用的是意大利爲例):

    • 必要時應(Ubuntu的)安裝intlsudo locale-gen it_IT

    • 生成本地格式的日期:

    $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