所以 SCORM 2004 的 session_time 格式如下所示
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);
}