【问题标题】:php get weeklist of multitple daysphp获取多天的周列表
【发布时间】:2018-03-12 12:09:33
【问题描述】:

我想实现一个带有日期名称的动态周列表。

我的数据在一个数组中:

 12.03.2018 10:00:00
 13.03.2018 10:00:00
 14.03.2018 10:00:00
 14.03.2018 13:00:00
 14.03.2018 15:00:00
 15.03.2018 10:00:00
 16.03.2018 10:00:00

希望用php动态输出:

 Monday
 12.03.2018 10:00:00
 Tuesday
 13.03.2018 10:00:00
 Wednesday
 14.03.2018 10:00:00
 14.03.2018 13:00:00
 14.03.2018 15:00:00
 Thursday
 15.03.2018 10:00:00
 Friday
 16.03.2018 10:00:00

我知道我得到这样的日期名称:

$myDateTime = DateTime::createFromFormat('YmdHi', '201803121830');
echo $myDateTime ->format('D');

如何动态执行此操作?

【问题讨论】:

  • 您的输入数据在哪里?在一个文件中?在数组中?从数据库中检索???
  • 最好向我们展示您当前拥有的代码!
  • @RiggsFolly 在一个数组中
  • 向我们展示您用于处理数组的代码!
  • @RiggsFolly 这是一个 MySQL 语句。 SELECT * FROM myDatetimeTable

标签: php datetime format


【解决方案1】:

遍历结果,使用外部变量跟踪当前日期,在每次迭代中检查日期是否已更改。如果是,请显示名称并更改外部变量。如果没有,请不要做任何事情:

<?php
$dates[] = "12.03.2018 10:00:00";
$dates[] = "13.03.2018 10:00:00";
$dates[] = "14.03.2018 10:00:00";
$dates[] = "14.03.2018 13:00:00";
$dates[] = "14.03.2018 15:00:00";
$dates[] = "15.03.2018 10:00:00";
$dates[] = "16.03.2018 10:00:00";

$day = null; // variable for keeping track
foreach ($dates as $date) {
    $d = \DateTime::createFromFormat("d.m.Y H:i:s", $date);
    $dayName = $d->format("D");
    if ($day !== $dayName) { // the day changed it, update and show
        $day = $dayName;
        echo $day.PHP_EOL;
    }
    echo $date.PHP_EOL;
}

Demo

结果

星期一

12.03.2018 10:00:00

周二

13.03.2018 10:00:00

星期三

14.03.2018 10:00:00

14.03.2018 13:00:00

14.03.2018 15:00:00

周四

15.03.2018 10:00:00

周五

16.03.2018 10:00:00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2012-11-22
    • 2012-08-17
    相关资源
    最近更新 更多