用阿拉伯语显示日期

Hyd*_*erA 6 php date arabic

这是我的代码:

setlocale( LC_ALL,'ar' ); 
echo strftime( '%e %b, %Y', strtotime( '2011-10-25' ));
Run Code Online (Sandbox Code Playgroud)

输出:

25 Sep, 2011
Run Code Online (Sandbox Code Playgroud)

为什么不显示阿拉伯语日期?我是否错误地使用strftime?

Amr*_*ero 24

在这里你可以打印阿拉伯语PHP日期:

创建一个名为的文件arabicdate.php并将此函数放入其中:

function ArabicDate() {
    $months = array("Jan" => "?????", "Feb" => "??????", "Mar" => "????", "Apr" => "?????", "May" => "????", "Jun" => "?????", "Jul" => "?????", "Aug" => "?????", "Sep" => "??????", "Oct" => "??????", "Nov" => "??????", "Dec" => "??????");
    $your_date = date('y-m-d'); // The Current Date
    $en_month = date("M", strtotime($your_date));
    foreach ($months as $en => $ar) {
        if ($en == $en_month) { $ar_month = $ar; }
    }

    $find = array ("Sat", "Sun", "Mon", "Tue", "Wed" , "Thu", "Fri");
    $replace = array ("?????", "?????", "???????", "????????", "????????", "??????", "??????");
    $ar_day_format = date('D'); // The Current Day
    $ar_day = str_replace($find, $replace, $ar_day_format);

    header('Content-Type: text/html; charset=utf-8');
    $standard = array("0","1","2","3","4","5","6","7","8","9");
    $eastern_arabic_symbols = array("?","?","?","?","?","?","?","?","?","?");
    $current_date = $ar_day.' '.date('d').' / '.$ar_month.' / '.date('Y');
    $arabic_date = str_replace($standard , $eastern_arabic_symbols , $current_date);

    return $arabic_date;
}
Run Code Online (Sandbox Code Playgroud)

现在在您的页面中包含此文件:

include 'arabicdate.php';
Run Code Online (Sandbox Code Playgroud)

然后你可以打印阿拉伯语PHP日期:

echo ArabicDate();
Run Code Online (Sandbox Code Playgroud)

实时格式化示例:

http://ideone.com/MC0hou

希望有所帮助.


Ami*_*lmy 5

这个怎么样:

function arabicDate($time)
{
    $months = ["Jan" => "?????", "Feb" => "??????", "Mar" => "????", "Apr" => "?????", "May" => "????", "Jun" => "?????", "Jul" => "?????", "Aug" => "?????", "Sep" => "??????", "Oct" => "??????", "Nov" => "??????", "Dec" => "??????"];
    $days = ["Sat" => "?????", "Sun" => "?????", "Mon" => "???????", "Tue" => "????????", "Wed" => "????????", "Thu" => "??????", "Fri" => "??????"];
    $am_pm = ['AM' => '??????', 'PM' => '?????'];

    $day = $days[date('D', $time)];
    $month = $months[date('M', $time)];
    $am_pm = $am_pm[date('A', $time)];
    $date = $day . ' ' . date('d', $time) . ' - ' . $month . ' - ' . date('Y', $time) . '   ' . date('h:i', $time) . ' ' . $am_pm;
    $numbers_ar = ["?", "?", "?", "?", "?", "?", "?", "?", "?", "?"];
    $numbers_en = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];

    return str_replace($numbers_en, $numbers_ar, $date);
}
Run Code Online (Sandbox Code Playgroud)

注意:参数($ time)应该是Unix时间戳。


Nev*_*kes 4

AFAIKsetlocale实际上不会为您做任何语言翻译,而是会影响格式化和比较器功能等内容。如果您想要本地化,那么您可以尝试使用IntlDateFormatter,它可能会满足您的需求。

更新:如果 PHP 5.3 不适合您,您也可以按照此问题中的建议尝试Zend_Date 。