gpt4 book ai didi

PHP 检查日期字符串是否有周

转载 作者:行者123 更新时间:2023-12-02 03:43:06 24 4
gpt4 key购买 nike

我正在为学校做一个项目,我应该在其中打印一串这样的日期:

第 36 周:2013 年 9 月 4 日 - 2013 年 9 月 10 日

第 37 周:11.9.2013 - 17.9.2013 等等

编辑:删除旧代码以节省空间

这适用于几周,但现在应该像这样打印不同的日子:

第 36 周:2013 年 9 月 4 日 - 2013 年 9 月 10 日

第 37 周:2013 年 9 月 11 日 - 2013 年 9 月 17 日

18.9.2013

191.10.2013

有没有一种方法可以检查字符串是否有整整一周,而不会出现无休止的 if-else 情况?

编辑

我稍微修改了我的代码:

$dates = "04.09.2013,05.09.2013,24.12.2015,07.09.2013,08.09.2013,09.09.2013,10.09.2013,11.09.2013,12.09.2013,13.09.2013,14.09.2013,15.09.2013,16.09.2013,17.09.2013,10.01.2013,19.09.2013,20.01.2113,21.09.2013,22.09.2013,23.09.2013,24.09.2013,25.09.2013,26.09.2013,27.09.2013,28.09.2013,29.09.2011,30.09.2013,01.10.2013";


fixDates($dates);

function fixDates($dates) {
$datesArray = explode(',', $dates);
$week_dates = array();
$weeks = array();
$date = array();
$temp_array = array();
$pvmArray[] = array();
$i = 0;

foreach($datesArray as $date) {

$date = explode(".", $date);
$date = mktime(0, 0, 0, $date[1], $date[0], $date[2]);
$week = (int)date('W', $date);
$year = (int)date('Y', $date);
$day = (int)date('w', $date);
$date = date('d.m.Y', $date);

$pvmArray[$i]['week'] = $week;
$pvmArray[$i]['date'] = $date;
$pvmArray[$i]['year'] = $year;
$pvmArray[$i]['day'] = $day;
$i++;
}


foreach ($pvmArray as &$v) {

if (!isset($temp_array[$v["week"]]))
$temp_array[$v["week"]] =& $v;

}

$weeks = array_values($temp_array);

foreach ($weeks as $pvm) {
$week = $pvm["week"];
$year = $pvm["year"];

findWeekDays($week, $pvmArray);
}
}

function findWeekDays($week, $pvmArray) {

echo "<br><b>Viikko " . $week. ": </b><br>";
foreach ($pvmArray as $pvm) {
$weeks = $pvm["week"];
$year = $pvm["year"];
$date = $pvm["date"];
$day = $pvm["day"];

if ($weeks == $week) {

echo $date. ", ";

}
}

}

现在我可以得到这样的输出:

第 36 周:04.09.2013, 05.09.2013, 07.09.2013, 08.09.2013,

第 52 周:24.12.2015,

第 37 周:09.09.2013, 10.09.2013, 11.09.2013, 12.09.2013, 13.09.2013, 14.09.2013, 15.09.2013,

第 38 周:16.09.2013, 17.09.2013, 19.09.2013, 21.09.2013, 22.09.2013,

第 2 周:2013 年 1 月 10 日,

第 3 周:20.01.2113,

我现在的问题是我仍然必须像这样对同一周内的日子进行分组

第 37 周:09.09.2013 - 15.09.2013

对此有什么想法吗?我知道我可以先得到年份,然后是星期,然后是日期的日期(为此创建一个新数组),然后将这一天与前一天进行比较,但这似乎很难而且不太合逻辑。感谢您的评论,它确实给了我新的思考思路。

最佳答案

尽情享受吧!这是开始休息,你必须自己做。

$weeks = array();

foreach($dates as $date)
$weeks[date('W', strtotime($date))][] = $date;

foreach ($weeks as $week => $days)
{
if (! sizeof($days))
continue;

echo 'Week '.$week.': '.implode(', ',$days)."\n";
}

关于PHP 检查日期字符串是否有周,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18916168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com