4

したがって、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);
}
4

2 に答える 2