Skip to content

Instantly share code, notes, and snippets.

@nickopris
Last active January 27, 2022 21:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nickopris/3a3fdb88fb3d2186b24ff7f745f68a6a to your computer and use it in GitHub Desktop.
Save nickopris/3a3fdb88fb3d2186b24ff7f745f68a6a to your computer and use it in GitHub Desktop.
<?php
$dates = [
"12/01/2021",
"12/05/2021",
"12/09/2021",
"12/10/2021",
"12/11/2021",
"12/15/2021",
"12/10/2021",
"12/31/2021",
"01/10/2022",
"01/17/2022",
"01/23/2022",
];
$dates_to_timestamps = [];
foreach ($dates as $d) {
$v = DateTimePlus::createFromFormat("m/d/Y", $d);
$dates_to_timestamps[] = $v->getTimestamp();
}
sort($dates_to_timestamps);
$one_week = 7 * 24 * 60 * 60;
$streak = 0;
$week_start = reset($dates_to_timestamps) + $one_week;
$week_end = $week_start + $one_week;
foreach ($dates_to_timestamps as $t) {
if ($t < $week_start) {
continue;
}
if ($t >= $week_start && $t <= $week_end) {
$streak++;
$week_start = $week_end;
$week_end = $week_end + $one_week;
}
else {
$streak = 0;
if ($t >= $week_end) {
$week_start = $t + $one_week;
$week_end = $week_start + $one_week;
}
}
}
return $streak;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment