From b0e696364273e2e00a05b58cb3165d76c54571ff Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Wed, 6 Jun 2018 06:10:38 -0500 Subject: [PATCH] Improved humanDurationFromInterval() --- CHANGELOG-v3.md | 5 +++++ src/helpers/DateTimeHelper.php | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGELOG-v3.md b/CHANGELOG-v3.md index 12acd54d0eb..62ec324a1f8 100644 --- a/CHANGELOG-v3.md +++ b/CHANGELOG-v3.md @@ -1,5 +1,10 @@ # Release Notes for Craft CMS 3.x +## Unreleased + +### Changed +- Improved the output of `craft\helpers\DateTimeHelper::humanDurationFromInterval()`. + ## 3.0.10.1 - 2018-06-06 ### Fixed diff --git a/src/helpers/DateTimeHelper.php b/src/helpers/DateTimeHelper.php index 019df2373c1..b73d83446ac 100644 --- a/src/helpers/DateTimeHelper.php +++ b/src/helpers/DateTimeHelper.php @@ -639,7 +639,18 @@ public static function humanDurationFromInterval(DateInterval $dateInterval, boo $timeComponents[] = $dateInterval->s == 1 ? Craft::t('app', '1 second') : Craft::t('app', '{num} seconds', ['num' => $dateInterval->s]); } - return implode(', ', $timeComponents); + $last = array_pop($timeComponents); + if (!empty($timeComponents)) { + $string = implode(', ', $timeComponents); + if (count($timeComponents) > 1) { + $string .= ','; + } + $string .= ' '.Craft::t('app', 'and').' '; + } else { + $string = ''; + } + $string .= $last; + return $string; } // Private Methods