• ベストアンサー

指定日からの経過分数

Perlでプログラムを書いているのですが 20081202123000といった文字列から 19700101000000からの経過分数を取得したいのですが time関数を使えば出来そうだというのはわかるのですが どのようにだしたらよいのかわかりません。 ご教示おねがいいたします。

  • Perl
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

timelocalを使えばできますが、timelocalの引数は 年、月、日、時、分、秒を分けて与える必要があります。 use Time::Local; my $strtime = "20081202123000"; my($year, $month, $day, $hour, $minute, $second) = ($strtime =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/); my $time = timelocal($second, $minute, $hour, $day, $month-1, $year); といった感じで。 (timelocal/localtime は、月が0~11で表されるので、1ずらす必要があることに注意) あとは、引き算して60で割れば経過分数になりますね。

nana_poco
質問者

お礼

ありがとうございます。うまくいきました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

Time::Local の timelocal を使うと 1970年 1月 1日 0:00 (GMT) から指定した時刻までの経過時間が秒単位でわかるらしい. ただしうるう秒に対応しているかどうかは不明.

nana_poco
質問者

補足

ありがとうございます。 わたしもそれを調べたのですが timelocal(20081202123000)と書いてもエラーになってしまうのです。

関連するQ&A

  • Excelでの経過分数の求め方

    Excelで、指定した日時から現時刻までの経過分数を出したいです。 例をあげると、 2009/11/11 11:11から現在2009/11/29 8:51までの経過分数は25780分ですが、 それをセル内に表示させたいです。 DATEDIF関数を使えば日数までは求められることが分かったのですが、 それ以降がわかりません。 教えていただけると幸いです。

  • 記録されている時間から何日経ったか表示したい

    CGI(perl)勉強中です。 2012年12月18日22時15分 のように文字列で記録されている時間があります。 (事情によりこの時刻は上記のような文字列型式でしか記録できません) この時間が、現在時刻と比較し、何日経過しているかを表示させたいと思っています。 time 関数を使えば現在時刻の取得が可能ということは分かりました。 この現在時刻から上記の日時をマイナスすれば経過秒数が分かり、 これを日数に計算しなおせばできると思うのですが、 2012年12月18日22時15分をtime関数で取得した現在時刻と同じ型式に 変換させる方法が分かりません。 また、他によい計算方法があればよろしくお願いします。

    • ベストアンサー
    • Perl
  • PerlでPHPのfsockopen関数のようなものはありますか?

    phpでは fsockopen関数があり、ターゲット・ポート・エラー番号・エラー文字列・タイムアウトを設定すれば、結果を文字列として取得できます。 これをperlで同じことをさせたいのですが、簡単なサンプルがありましたら教えてください。

  • 分数をdatetime型にするには?

    分数がInt型のデータの場合 ExcelのTime()関数を使ったときの結果と同じにする 方法を教えてください。 =Time(0,AccessTime,0) 1 ->0:01:00 5 ->0:05:00 30 ->0:30:00 60 ->1:00:00 70 ->1:10:00 100 ->1:40:00

  • エクセル2003で表内の整数と分数の合計値を分数で表示させる方法

    関数初心者です。 エクセル2003で条件に合った関数があれば 教えていただけると助かります。 1)エクセル2003で表内(1行目A列~E列)に各果物の名称が 入っています。 2)セル3行目A列~E列には、果物名+小(サイズ)の名称が 入っています。 3)各果物は、個数1で数えます。 4)果物名+小(サイズ)は個数単位を1ではなく、   1/3(3分の1)の分数で数えます。 質問)合計欄(7行目A列~E列)に、果物のサイズに関係なく 関数を入れて、果物合計個数を分数表示にしたいです。 例)りんごの場合、りんご5個とりんご小(1/3×2)で、   5+2/3=17/3(帯分数でもいいです)と合計欄に 表示させたいのです。   各果物を抽出して整数と分数を合計して表示する関数は   あるのでしょうか?   列や行やシートが増えても構いません。   設定が簡単で解りやすいのがあれば助かります。   よろしくお願い致します。

  • VBA split(文字列, ★) ★←複数デリミタ指定することできますか?

    VBAのsplit()関数ですが、 デリミタは1つしか指定できないのでしょうか? 例えば、 ------------------ 2005-5/23 19'02"40 ------------------ のような文字列を Perlの様に簡単に分割することは無理でしょうか? Array = split(文字列, /[ :\/\'\"-]/)

  • 初心者:指定した時間が経過すると計算を開始するプログラム

    たぶん簡単な内容だとは思うのですが自分では頭が混乱してきているので質問します。 C++Builderでプログラムを作成し,このプログラムは0.01[s]でループしていくと仮定します。(ある条件を満たすまで) ここで、プログラムを実行してから0.1[s]経過すると先ほどのプログラムからある変数を取得し、別の関数内で計算を行ってまたもとのプログラムの変数に受け渡す。そして、これは0.1[s]毎に行いたいと考えています。(毎回同じ計算を行う) ここで、Sleep関数を使って計算を行おうと考えたのですが0.01[s]でループしていたプログラムにもSleepが影響してしまい、うまく実行することができませんでした。 簡単にいいますと0.01[s]間隔で得られている数値を0.1[s]経つごとに計算して計算結果をもとのプログラムに戻すといった感じです。 うまく伝わっていないかもしれませんがどなたかご教授よろしくお願いいたします。

  • EXCEL 指定の文字以外の文字を指定の文字に置換

    EXCELの置換するための関数を教えてください。 A列に画像表示のHTMLを入れているのですが、そのなかの画像サイズが何故か100%以外のものになっているものが見つかりました。 1000件近くあるのですが、100%以外になっている文字列をすべて100%にするための関数の作り方をご教示お願いいたします。 A列の文字列はHTMLなので、パーセンテージ以外にも色々な文字が入っているので、その中の1部を書き換え、という形でお願いいたします。

  • Perlで分数を保持したい

    初心者です。 Perlで分数を保持したいのです。以下のように記述しましたが、保持できていないようです。。 とりあえず整数で持ってきて、Perl内で分数に置き換えるということを考えていますが面倒そうです。分数で直に持ってこられる方法がありましたら教えてください。 Perl内記述 #Q1シングル for ($i=0;$i<=97;$i++){ $val_name ="Q1_"."$i"."_chk"; $name = 'Q1'; if ($data{$name} eq "$i"){ $$val_name = ' checked'; }else{ $$val_name = ''; } } HTML内記述 <TR height="25"> <TD align="center"><INPUT type="radio" name="Q1" value="1/3" _Q1_1/3_CHK_></TD> <TD>A</TD> </TR> ちなみに上記記述において、1/3の部分が整数であればこのプログラムは正常に動きます。なので1/3の持ってきかただけなのですが、 お願い申し上げます。

    • ベストアンサー
    • Perl
  • CGIの正規化

    Perlでプログラムを組んでいます。 正規化って便利なものがあるのは判ったのですが、 使い方がいまいち判りません。 例えば 空白から@までの文字を取得したい場合は どのように書いたら良いのでしょうか □をスペースとして abcf□defgh@ertyh□asdfg 見たいな文字列で defgh を取得したいのです。  良かったら教えてください。

    • 締切済み
    • CGI