如何查找一周两天之间的天数? [英] How to finding the number of days between two days of the week?

查看:57
本文介绍了如何查找一周两天之间的天数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用PHP查找两天之间非日期的天数?

How to find the number of days between two days not dates using PHP?

我知道如何获取两个日期之间的天数,但是我的输入值是日期名称(不知道日期的日期).

I know how to get the number of days between two dates, but my input values are day names (date-ignorant).

输入/输出:

星期三星期六返回 3

星期日星期三返回 3

推荐答案

您的任务似乎根本不需要日期函数.一个简单的查找数组就足够了.

Your task doesn't seem to require date functions at all. A simple lookup array will suffice.

  1. 从结束日期的整数中减去开始日期的整数值.
  2. 如果差异为零或更小,请加7以始终返回正确的正天数.

代码:(演示)

function daysUntil($start, $end) {
    $lookup = [
        'Sunday' => 0,
        'Monday' => 1,
        'Tuesday' => 2,
        'Wednesday' => 3,
        'Thursday' => 4,
        'Friday' => 5,
        'Saturday' => 6
    ];
    $days = $lookup[$end] - $lookup[$start] + ($lookup[$end] <= $lookup[$start] ? 7 : 0);
    return "{$days} days from {$start} to {$end}\n";
}

echo daysUntil('Wednesday', 'Saturday');  // Thursday, Friday, Saturday
echo daysUntil('Monday', 'Friday');       // Tuesday, Wednesday, Thursday, Friday
echo daysUntil('Thursday', 'Thursday');   // [assumed next week]
echo daysUntil('Friday', 'Monday');       // Saturday, Sunday, Monday
echo daysUntil('Saturday', 'Sunday');     // Sunday
echo daysUntil('Sunday', 'Saturday');     // Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
echo daysUntil('Sunday', 'Wednesday');    // Monday, Tuesday, Wednesday

输出:

3 days from Wednesday to Saturday
4 days from Monday to Friday
7 days from Thursday to Thursday
3 days from Friday to Monday
1 days from Saturday to Sunday
6 days from Sunday to Saturday
3 days from Sunday to Wednesday


或者您可以用4个函数调用替换查找数组并获得相同的结果:(演示)

function daysUntil($start, $end) {
    $days = date('w', strtotime($end)) - date('w', strtotime($start));
    $days += $days < 1 ? 7 : 0;
    return "{$days} days from {$start} to {$end}\n";
}

这篇关于如何查找一周两天之间的天数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆