首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在php中计算给定开始日期和结束日期之间的天数。

在php中计算给定开始日期和结束日期之间的天数。
EN

Stack Overflow用户
提问于 2014-11-27 06:33:16
回答 3查看 1.3K关注 0票数 0

我有$start_date & $end_date。

我要查一查有多少天的名字。

我试着遵循代码片段:

代码语言:javascript
运行
复制
$start_date = '20-07-2012';
$end_date = '22-07-2012';
$start = strtotime($start_date);
$end = strtotime($end_date);
$interval = 2;
$out='';
$int = 24*60*60*$interval;
for($i= $start;$i<= $end; $i += $int ){

    echo date('d-m-Y',$i).'<br />';
}

产出:

代码语言:javascript
运行
复制
28-11-2014
30-11-2014

但我期待的结果是:

代码语言:javascript
运行
复制
28-11-2014 => friday
30-11-2014 => saturday

让我知道什么应该是php代码,以获得预期的输出。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-27 07:24:45

代码语言:javascript
运行
复制
   // $array[desc:day count starting w 1][desc: 'date' or 'day'];
   // $array[2]['day'];
<?php
$start = '27-11-2014';
$end = '1-12-2014';
    function date_difference($start, $end)
    {
        $first_date = strtotime($start);
        $second_date = strtotime($end);
        $offset = $second_date-$first_date; 
        $result = array();
        for($i = 0; $i <= floor($offset/24/60/60); $i++) {
            $result[1+$i]['date'] = date('d-m-Y', strtotime($start. ' + '.$i.'  days'));
            $result[1+$i]['day'] = date('l', strtotime($start. ' + '.$i.' days'));
        }
        echo '<pre>';
        print_r($result);
        echo '</pre>';
    }
    date_difference($start, $end);
?>

结果

代码语言:javascript
运行
复制
Array
(
    [1] => Array
        (
            [date] => 27-11-2014
            [day] => Thursday
        )

    [2] => Array
        (
            [date] => 28-11-2014
            [day] => Friday
        )

    [3] => Array
        (
            [date] => 29-11-2014
            [day] => Saturday
        )

    [4] => Array
        (
            [date] => 30-11-2014
            [day] => Sunday
        )

    [5] => Array
        (
            [date] => 01-12-2014
            [day] => Monday
        )

)
票数 1
EN

Stack Overflow用户

发布于 2014-11-27 06:38:59

日名以'l' (小写L)表示。

如果只需要字符串,请使用:

代码语言:javascript
运行
复制
echo date('d-m-Y => l', $i) . '<br />';

如果您想要数组,请使用:

代码语言:javascript
运行
复制
$days = array();

for ($i = $start;$i <= $end; $i += $int) {
    $days[] = array(
        'date' => date('d-m-Y', $i),
        'day'  => date('l', $i)
    );
}

print_r($days);

关于date手册中的更多信息

票数 1
EN

Stack Overflow用户

发布于 2014-11-27 06:40:34

试试这个修改过的代码

代码语言:javascript
运行
复制
    <?php

    $start_date = '20-07-2012';
    $end_date = '22-07-2012';
    $start = strtotime($start_date);
    $end = strtotime($end_date);
    $interval = 2;
    $out='';
    $int = 24*60*60*$interval;
    for($i= $start;$i<= $end; $i += $int ){

        echo date('d-m-Y => l',$i).'<br />';
    }
?>

产出:

代码语言:javascript
运行
复制
20-07-2012 => Friday
22-07-2012 => Sunday
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27164426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档