timeValue関数

本ページには広告が含まれています。

時刻を表す文字列をシリアル値に変換します。結果は、0~0.999988425925926((23:59:59)/(24:00:00)→(23×3600+59×60+59)/(24×3600)=86399/86400=0.999988425926)の範囲の値を取ります。

引数に日付が含まれる場合日付は無視され、時刻情報のみ変換されます。

構文
  1. UString = timeValue( str )
引数
str 必須
時刻文字列。hh:nn:ss AM/PMhh:nn AM/PMhh AM/PMhh:nn:sshh:nnhh時nn分ss秒hh時nn分のいずれかの形式を指定。
戻り値
シリアル値 (例)0…00:00:000.5…12:00:000.999988425925926…23:59:59

プログラム

UWSC

解説

    2-6行目
    UWSC
    7,46行目
    UWSC

    時・分・秒・AM/PMを正規表現を使い形式を判断し、Matchesコレクションとして取得。SubMatchesコレクションに各要素の値を代入。取得した値は文字列のためVAL関数で数値に変換。シリアル値は1日=1.0とするため、「時」は24、「分」は1440、「秒」は86400で割ります。

    AMは午前、PMは午後を表し、AM0時=AM12時、PM0時=PM12時として計算します。AM/PM表記を含む場合、「hh AM/PM」部分で再帰呼び出しをしています。例えば「hh:nn:ss AM/PM」の場合、「hh AM/PM」と「nn:ss」の部分で分けて計算しています。

    「hh:nn:ss AM/PM」の形式ならば8行目>>>を実行。
    「hh:nn AM/PM」の形式ならば13行目>>>を実行。
    「hh AM/PM」の形式ならば19行目>>>を実行。
    「hh:nn:ss」の形式ならば24行目>>>を実行。
    「hh:nn」の形式ならば29行目>>>を実行。
    「hh時nn分ss秒」の形式ならば34行目>>>を実行。
    「hh時nn分」の形式ならば39行目>>>を実行。
    いずれの形式にもあれはまらなければ44行目>>>を実行。
    8-12行目
    UWSC

    「hh:nn:ss AM/PM」の形式。

    SubMatches(0)
    SubMatches(1)
    SubMatches(2)
    SubMatches(3)
    AM/PM
    13-18行目
    UWSC

    「hh:nn AM/PM」の形式。

    SubMatches(0)
    SubMatches(1)
    SubMatches(2)
    AM/PM
    19-23行目
    UWSC

    「hh AM/PM」の形式。まず「.SubMatches(0) MOD 12」で「時」を12時間表記に直します。「.SubMatches(1)」が「AM」もしくは「am」にマッチしたら午前なので「0」、マッチしなければ午後なので「12」を加え24時間表記にします。IIF関数の部分が午前・午後の判断をしています。

    SubMatches(0)
    Submatches(1)
    AM/PM
    24-28行目
    UWSC

    「hh:nn:ss」の形式。

    SubMatches(0)
    SubMatches(1)
    SubMatches(2)
    29-33行目
    UWSC

    「hh:nn」の形式。

    SubMatches(0)
    SubMatches(1)
    34-38行目
    UWSC

    「hh時nn分ss秒」の形式。

    SubMatches(0)
    SubMatches(1)
    SubMatches(2)
    39-43行目
    UWSC

    「hh時nn分」の形式。

    SubMatches(0)
    SubMatches(1)
    44-45行目
    UWSC

    いずれの形式にも当てはまらなければエラー値を返す。

    47行目
    UWSC

    serialの小数部分のみ返します。

使い方

UWSC
結果
CSV

プログラム実行例

Windowsの稼働時間を取得

Windowsシステムの起動時間から稼働時間を求めます。

結果はd:hh:nn:ssの形式で出力されます。

UWSC
結果
プレーンテキスト
使用関数

時刻が指定した範囲内にあるか

現在の日時が18:00:00〜22:00:00の範囲内にあるか。

UWSC
使用関数

フォルダ内のファイルを更新日時でソートする

UWSC
結果
プレーンテキスト
使用関数

時刻文字列をシリアル値に変換

UWSC
結果
プレーンテキスト
使用関数

指定したフォルダの動画の合計時間を求める

UWSC
結果
プレーンテキスト
使用関数

関連記事

now関数 (自作関数)
現在の日時のシリアル値を返します。
getSerialTime関数 (自作関数)
UWSC時間からシリアル値を取得します。
uwscToSerial関数 (自作関数)
UWSC時間シリアル値に変換します。
serialToUNIX関数 (自作関数)
シリアル値UNIX時間に変換します。
UNIXToSerial関数 (自作関数)
UNIX時間 をシリアル値に変換します。
Second関数 (自作関数)
シリアル値からを求めます。
serialToUwsc関数 (自作関数)
シリアル値UWSC時間に変換します。
Hour関数 (自作関数)
シリアル値で与えられた時刻から時間を求めます。戻り値は023の範囲の整数となります。
Minute関数 (自作関数)
シリアル値で与えられた時刻からを求めます。戻り値は059の範囲の整数となります。
GETTIME関数 (スクリプト関数)
日付、時間を取得します。