したがって、SCORM 2004 の session_time 形式は次のようになります。
P[yY][mM][dD][T[hH][mM][s[.s]S]]
角括弧内のオプションはオプションですが、少なくとも 1 つのオプションを含める必要があります。
フォーマットの例は、PT0H0M47S
つまり、0 時間 0 分 47 秒です。
値は、MSSQL データベースに varchar として格納されます。
この時間を Start Date Time に追加して End Date Time を計算できるように、この文字列形式を使用可能な形式に変換できる必要があります。
現在、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);
}