如何在PHP日期中翻译AM和PM


How to translate AM and PM in PHP date

我在论坛设置中有一个上下文,它使用日期函数来处理日期时间字符串。此上下文接受日期函数的格式字符串。然而,阿拉伯语论坛和我想将ampm的字符串分别翻译成阿拉伯语字符串中的另一个等价物,如صم。我尝试了以下代码来替换外部(上下文)date():

echo date("addslashes(date('D d M Y g:i'),'A..Z')".str_ireplace(array('pm','am'), array('م','ص'),date(' a')));

我使用了addslashes,希望能逃脱第一个内部日期的输出。然而,输出是这样的:

pm202005Sundaypm0509UTC05(20pm30UTC('Sun 20 Apr 2014 9:03'),'PM..0') م

它只是需要替换ampm,但正如您所看到的,整个日期字符串都是错误的。这是代码的实时演示。我需要知道,假设任何代码都将在预定义的date()中完成,是否有可能获得我需要的东西?

您可以在日期内使用三元运算符来设置条件格式。

date($format = (date(G) > 11) ? 'h:i 'ص' : 'h:i 'م');

或上午/下午

date($format = (date(G) > 11) ? 'h:i 'p'm' : 'h:i 'a'm');

您可以设置不同于h:i的格式,但这将显示17:40的05:40 pm或05:40的05:40 am。它查找日期(G),即0-23格式的小时。如果日期(G)大于11,则使用第一种格式,否则使用第二种格式。

这是你的代码分支http://ideone.com/BobelH

还有另一种方法。它使用strtotimestr_replace如下:

<?php
$dtFormat = "Y-m-d H:i:s"; //MySQL Datetime format
$curDT = date($dtFormat);
$curTime = strtotime($curDT);
$nowFormat = "Y-m-d h:i:s ";
$arrEn = array('am', 'pm');
$arrAr = array('ص', 'م');
echo date($nowFormat).str_replace($arrEn, $arrAr,date("a", $curTime));

工作演示:http://ideone.com/xfECCD