strftime与序数

时间:2014-07-18 14:38:08

标签: php

如何以第1版,第2版,第25版,第23版等格式显示strftime的日期......?

我目前的代码如下:

strftime("%B %d, %Y",$expiration_date);

我已经检查了一些解决方案,但无效。

2 个答案:

答案 0 :(得分:2)

如果您的日期在后台使用时间戳,则只需使用PHP date()格式化日期即可。它的格式字符S完全符合您的需要:

date('jS', $timestamp);

会返回类似“1st”,“2nd”,“3rd”等的内容。

如果您不使用时间戳,olivier's solution可能是您最好的选择,或者将日期转换为strtotime()的时间戳。处理后者对于这个问题并不值得,但是如果你计划在日期进行算术运算(例如找到两个日期之间的间隔),你应该考虑时间戳。

答案 1 :(得分:0)

您可以使用this function

<?php

function addOrdinalNumberSuffix($num) {
    if (!in_array(($num % 100), array(11,12,13))) {
        switch ($num % 10) {
            // Handle 1st, 2nd, 3rd
            case 1:  return $num.'st';
            case 2:  return $num.'nd';
            case 3:  return $num.'rd';
        }
    }
    return $num.'th';
}

$expiration_date = time();

$date_str  = strftime("%B ", $expiration_date);
$date_str .= addOrdinalNumberSuffix(strftime("%d", $expiration_date));
$date_str .= strftime(", %Y", $expiration_date);

echo $date_str; // July 18th, 2014

?>

这就是说,评论中 Lightness Races in Orbit 中提到的workaround对我来说似乎更好。