这是我用来获取日期的代码(用西班牙语):
$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上运行.
好吧,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)