時刻を表す文字列をシリアル値に変換します。結果は、0~0.999988425925926((23:59:59)/(24:00:00)→(23×3600+59×60+59)/(24×3600)=86399/86400=0.999988425926)の範囲の値を取ります。
引数に日付が含まれる場合日付は無視され、時刻情報のみ変換されます。
- 構文
- UString = timeValue( str )
- 引数
- str 必須
- 時刻文字列。hh:nn:ss AM/PM、hh:nn AM/PM、hh AM/PM、hh:nn:ss、hh:nn、hh時nn分ss秒、hh時nn分のいずれかの形式を指定。
- 戻り値
- シリアル値 (例)0…00:00:00、0.5…12:00:00、0.999988425925926…23:59:59
プログラム
解説
- 2-6行目
- 7,46行目
時・分・秒・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行目
「hh:nn:ss AM/PM」の形式。
- SubMatches(0)
- 時
- SubMatches(1)
- 分
- SubMatches(2)
- 秒
- SubMatches(3)
- AM/PM
- 13-18行目
「hh:nn AM/PM」の形式。
- SubMatches(0)
- 時
- SubMatches(1)
- 分
- SubMatches(2)
- AM/PM
- 19-23行目
「hh AM/PM」の形式。まず「.SubMatches(0) MOD 12」で「時」を12時間表記に直します。「.SubMatches(1)」が「AM」もしくは「am」にマッチしたら午前なので「0」、マッチしなければ午後なので「12」を加え24時間表記にします。IIF関数の部分が午前・午後の判断をしています。
- SubMatches(0)
- 時
- Submatches(1)
- AM/PM
- 24-28行目
「hh:nn:ss」の形式。
- SubMatches(0)
- 時
- SubMatches(1)
- 分
- SubMatches(2)
- 秒
- 29-33行目
「hh:nn」の形式。
- SubMatches(0)
- 時
- SubMatches(1)
- 分
- 34-38行目
「hh時nn分ss秒」の形式。
- SubMatches(0)
- 時
- SubMatches(1)
- 分
- SubMatches(2)
- 秒
- 39-43行目
「hh時nn分」の形式。
- SubMatches(0)
- 時
- SubMatches(1)
- 分
- 44-45行目
いずれの形式にも当てはまらなければエラー値を返す。
- 47行目
serialの小数部分のみ返します。
使い方
- 結果
プログラム実行例
Windowsの稼働時間を取得
Windowsシステムの起動時間から稼働時間を求めます。
結果はd:hh:nn:ssの形式で出力されます。
時刻が指定した範囲内にあるか
現在の日時が18:00:00〜22:00:00の範囲内にあるか。
フォルダ内のファイルを更新日時でソートする
時刻文字列をシリアル値に変換
指定したフォルダの動画の合計時間を求める
関連記事
- now関数 (自作関数)
- 現在の日時のシリアル値を返します。
- getSerialTime関数 (自作関数)
- UWSC時間からシリアル値を取得します。
- uwscToSerial関数 (自作関数)
- UWSC時間をシリアル値に変換します。
- serialToUNIX関数 (自作関数)
- シリアル値をUNIX時間に変換します。
- UNIXToSerial関数 (自作関数)
- UNIX時間 をシリアル値に変換します。
- Second関数 (自作関数)
- シリアル値から秒を求めます。
- serialToUwsc関数 (自作関数)
- シリアル値をUWSC時間に変換します。
- Hour関数 (自作関数)
- シリアル値で与えられた時刻から時間を求めます。戻り値は0〜23の範囲の整数となります。
- Minute関数 (自作関数)
- シリアル値で与えられた時刻から分を求めます。戻り値は0〜59の範囲の整数となります。
- GETTIME関数 (スクリプト関数)
- 日付、時間を取得します。
