首页 > 解决方案 > 以“格式”返回日期 本月” php

问题描述

使用 strtotime 很容易返回给定月份的第 n 天,strtotime例如

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

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

标签: php

解决方案


我不知道可以执行您的问题的 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

推荐阅读