返回日期,格式为“当月的<ordinal> <dayname>” php

时间:2018-10-02 21:46:11

标签: php

使用strtotime可以轻松返回给定月份的第n天,例如使用strtotime

date("j, d-M-Y", strtotime("second wednesday 2018-10"));

有相反的方法吗?例如,如果我要检查今天的日期(2018年10月2日,星期二)。我想回到“每月的第一个星期二”。

1 个答案:

答案 0 :(得分:1)

我不知道可以执行您的问题要求的PHP库。我一直在写一个函数,该函数可以执行我认为想要的操作,并且可以修改返回的字符串以获取所需的输出。

但这是一个有效的示例:https://3v4l.org/37BRW

function dateToOrdinalString($date) {
    // Convert datestring to timestamp, and prepare day, month, and year names
    $timestamp = strtotime($date);
    list($day, $month, $year) = explode(' ', date('l F Y', $timestamp));

    // Prepare ordinals
    $ordinals = ['first', 'second', 'third', 'fourth', 'fifth'];

    // Iterate through ordinal values
    foreach ($ordinals as $ordinal) {
        $string = "{$ordinal} {$day} of {$month} {$year}";

        // Compare original and ordinal timestamp for equality
        if ($timestamp === strtotime($string)) return $string;
    }

    return false;
}

echo dateToOrdinalString('2018-12-25');
// fourth Tuesday of December 2018