strftime不显示PM或AM

Dan*_*nny 6 php strftime

这是我用来获取日期的代码(用西班牙语):

$fecha = strftime("%d de %B, %Y, a las %l:%M %p");
Run Code Online (Sandbox Code Playgroud)

我得到:

27 de julio, 2011, a las 7:10
Run Code Online (Sandbox Code Playgroud)

所以问题是,我的PM(或AM)在哪里?

我的应用程序在Linux上运行.

Pau*_*aul 7

好吧,php手册

并非所有转换说明符都可能由C库支持,在这种情况下,PHP的strftime()不支持它们.此外,并非所有平台都支持负时间戳,因此您的日期也是如此

这可能是你的问题.在这种情况下,你可以做这样的事情来获得AM/PM:

$time = time();
$fecha = strftime("%d de %B, %Y, a las %l:%M ", $time).(($time%86400) < 43200 ? 'AM' : 'PM');
Run Code Online (Sandbox Code Playgroud)

编辑:

这个答案是假设你想要一个UTC时间字符串(如果你想要另一个时区,你应该在字符串中包含时区,如果你正在存储或发送它),并且你的php.ini date.timezone设置为UTC.如果您不使用UTC,则应计算偏移量.请参阅@ Soylent17的回答.


小智 6

这个问题很老,但万一其他人需要它,它也发生在我身上。

似乎西班牙语语言环境没有实现 %p,因此请确保您的行位于将语言环境设置为西班牙语的行之前。可能您需要像这样分割代码。

 $hora = strftime(" a las %l:%M %p");
 $loc_sp = setlocale (LC_TIME,'es_ES');
 $fecha = strftime("%d de %B, %Y");
 echo $fecha.$hora;
Run Code Online (Sandbox Code Playgroud)


Tak*_*Tak 2

你在 OSX 上吗?如果是%p%P 不支持