【问题标题】:Convert Days in Array to date in a week range将数组中的天数转换为一周范围内的日期
【发布时间】:2018-03-03 19:44:07
【问题描述】:

我有这样的数组天数:

$days = ['Monday','Tuesday','Thursday','Friday','Sunday'];

我想将其转换为一周范围内的日期格式,例如,如果今天的日期是 2017 年 9 月 28 日,我希望结果在数组中看起来像这样:

$dateResult = ['28 Sep','29 Sep','01 Oct', '02 Oct', '03 Oct']

它将在从今天开始的一周范围内以上述格式查找日期

【问题讨论】:

  • 没有星期六? ....
  • 1 9 月 2 日?还是你的意思是十月?还有,这样日期的逻辑是什么?
  • @rtfm 数组中的日期是可以转换的日期
  • 到目前为止,您尝试过什么?你有什么问题?你可以得到今天的日期,是吗?您可以很容易地了解如何在线解析日期名称,还可以了解如何格式化日期。这不是免费的编码服务,您应该首先展示自己的一些研究和编码工作。顺便说一句,您的示例没有多大意义。为什么数组的第一个元素是 9 月 28 日?这不是星期一。你为什么要回到九月初?第一个数组似乎与第二个无关。为什么第一个忽略星期六?这一切都非常不清楚。
  • 为什么这里没有 30 sep?我们应该展示4天吗?除了星期天?请把逻辑解释清楚。

标签: php arrays date datetime


【解决方案1】:

首先,您需要将天数转换为数字。例如:1 代表星期一,2 代表星期二,依此类推。

//$days = ['Monday','Tuesday','Thursday','Friday','Sunday'];

$days_in_number = [1,2,4,5,7];

$r = array();
$today = date('N');
foreach($days_in_number as $x){
  $r[] = date('M-d',strtotime((($today-$x) * -1).' days'));
}

print_r($r);

注意:此代码仅适用于当前 1 周。

【讨论】:

  • 对不起,伙计,如果这对您不起作用。我不知道你在找什么。
【解决方案2】:
for ($i = 0; $i < 7; $i++) {
    /* Get day name i.e Friday, Saturday etc */
    $day_name    =     date("l", strtotime("+$i day"));
    /* Store result in array only if day is present in $days */
    if (in_array($day_name, $days)) {
        $result[]    =    date("d M", strtotime("next " . $day_name, strtotime("+". $i ." day")));
    }
}

输出:

Array
(
 [0] => 29 Sep
 [1] => 01 Oct
 [2] => 02 Oct
 [3] => 03 Oct
 [4] => 05 Oct
)

【讨论】:

    【解决方案3】:

    这将考虑从今天起的 7 天。

    $days = ['Monday','Tuesday','Thursday','Friday','Sunday'];
    
    $ret = [] ;
    for( $i = 0; $i < 7; $i ++) {
        $t = strtotime('+' . $i . ' day') ;
        if( in_array( Date('l', $t), $days ) ) {
            $ret[] = Date('d M', $t) ;
        }
    }
    print_r($ret) ;
    

    【讨论】:

    • 对不起,没有收到你
    猜你喜欢
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多