Skip to content

Instantly share code, notes, and snippets.

@enjikaka
Last active January 14, 2018 13:28
Show Gist options
  • Save enjikaka/212f6480a79a59c03a177597ad41625e to your computer and use it in GitHub Desktop.
Save enjikaka/212f6480a79a59c03a177597ad41625e to your computer and use it in GitHub Desktop.
HTML 5.1 Duration string / dateTime to minutes
export default function durationToMinutes (durationString) {
return durationString
.match(/\d+\w/g)
.map(u => ([parseInt(u.match(/\d+/g), 10), u.split(/\d+/g)[1]]))
.map(a => {
switch (a[1]) {
case 'D': return a[0] * 1440;
case 'H': return a[0] * 60;
case 'M': return a[0];
case 'S': return a[0] / 60;
}
})
.reduce((a, b) => (a + b));
}
<?php
function durationToMinutes ($durationString) {
preg_match_all("/\d+\w/", $durationString, $matches);
$minutes = 0;
foreach ($matches[0] as &$part) {
$units = preg_split("/\d+/", $part);
$nums = preg_split("/\D+/", $part);
$num = intval($nums[0]);
$unit = $units[1];
switch ($unit) {
case "D": $minutes += ($num * 1440); break;
case "H": $minutes += ($num * 60); break;
case "M": $minutes += $num; break;
case "S": $minutes += ($num / 60); break;
default: break;
}
}
return $minutes;
}
?>
@damircalusic
Copy link

Awesome my friend

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment