Таким образом, формат session_time в SCORM 2004 выглядит следующим образом.
P[yY][mM][dD][T[hH][mM][s[.s]S]]
Если параметры в квадратных скобках являются необязательными, однако он должен включать по крайней мере 1 из параметров.
Пример формата PT0H0M47S
Что означает 0 часов, 0 минут и 47 секунд.
Значение хранится как varchar в базе данных MSSQL.
Мне нужно иметь возможность преобразовать этот строковый формат в пригодный для использования формат, чтобы я мог добавить это время к дате начала, чтобы определить время окончания.
В настоящее время я перемещаю данные SCORM из старой базы данных в новую 1. Я мог бы сделать это на PHP и легко отформатировать время, но я бы предпочел написать все сценарии импорта на SQL.
Любая помощь по этому вопросу будет принята с благодарностью.
РЕДАКТИРОВАТЬ:
Если это поможет, это функция PHP, которую я написал для обработки формата для другой цели.
private function formatDuration($duration)
{
$count = preg_match('/P(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)D)?T?(([0-9]+)H)?(([0-9]+)M)?(([0-9]+)(\.[0-9]+)?S)?/', $duration, $matches);
if ($count)
{
$_years = (int) $matches[2];
$_months = (int) $matches[4];
$_days = (int) $matches[6];
$_hours = (int) $matches[8];
$_minutes = (int) $matches[10];
$_seconds = (int) $matches[12];
}
else
{
if (strstr($duration, ':'))
{
list($_hours, $_minutes, $_seconds) = explode(':', $duration);
}
else
{
$_hours = 0;
$_minutes = 0;
$_seconds = 0;
}
}
// I just ignore years, months and days as it is unlikely that a
// course would take any longer than 1 hour
return $_seconds + (($_minutes + ($_hours * 60)) * 60);
}