• ベストアンサー

年月日の数値化?

time関数とlocaltime関数で、現在の年月日を取ることはできるのですが、逆に年月日を与えてその数値(秒で表せる等)を取る関数はありますか? つまり2000年10月30日から今日2000年12月7日までの数値を引き算で計算させたいのです。 質問が分かりにくくてごめんなさい。

  • mune
  • お礼率13% (21/151)
  • Perl
  • 回答数3
  • ありがとう数6

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

  • ベストアンサー
noname#25358
noname#25358
回答No.3

 補足見ました。  サンプルを探してみたらなんかあっさり出てきました(笑)  参考URLのページをスクロールして、「日付文字列」のところをダウンロードしてください。

参考URL:
http://www2s.biglobe.ne.jp/%7Et_shige/pub/out/perl/index_nt.html

その他の回答 (2)

回答No.2

通常、perl といっしょに timelocal.pl というライブラリが配布 されていると思いますが、存在しないでしょうか? これを require して、 ;# $time = timelocal($sec,$min,$hours,$mday,$mon,$year); ;# $time = timegm($sec,$min,$hours,$mday,$mon,$year); と使うそうです。 文字列からこれらの個々の値を切り出すのは別の問題ですけど…

noname#25358
noname#25358
回答No.1

 Perlの標準関数にはそういうのはないので、どこからかもって来るか、でなければ作るしかないです。  まず、計算対象となる日付け(2000年10月30日)を、1970年01月01日からの秒数に変換します。(うるう年の計算が面倒くさいですが、がんばってください(^_^;)  次にtime関数から返ってきた値からその数値を引きます。  これで出来上がりです。  ただし、計算はすべてグリニッジ標準時で行ってください。無理に日本時間を意識するよりその方が楽です。

mune
質問者

お礼

ありがとうございます。やはり作るしかないのでしょうか?もしどこかに落っこちているならそのアドレスを教えてほしいのですが... ちなみに1970年01月01日からの秒数に変換するプログラムなんかは教えてくれま.... やはり作るしかないのでしょうか?

関連するQ&A

  • 次の日や前の日の年月日を取得するには?

    localtime(time); の戻り値から、「今」の年月日は取得できますが、 取得した年月日の次の日の年月日、前の日の年月日 を得る(標準的な)サブルーチンはないでしょうか?

    • ベストアンサー
    • Perl
  • Excel関数:日付にナノ秒を足して年月日を求めるには?

    はじめまして、 日付にナノ秒を足して年月日を求める関数式を教えてください。例)日付“1601年1月1日”に長整数“128335644000000000”ナノ秒を足すと結果が年月日“2007年9月6日”と出るようにするにはどのような関数式が必要でしょうか。 宜しくお願いします。

  • エクセルで生年月日から現在の年齢を計算する関数はないですか?

    エクセル95か2000でかまわないのですが、生年月日から現在の年齢を自動的に計算する関数は何かないでしょうか? たとえば、あるセルに生年月日を入力しておきます。行に2002年10月、11月、12月・・・と入力しておき、それぞれ2002年10月、11月、12月の年齢が、生年月日から計算されて参照されるような関数です。

  • EXCEL・月日のつもりで入力された文字列(数値)を年月日に変えるには

    A列に月日のつもりで入力された次のような文字列(又は数値)があります。これをB列に年月日に変換表示したいのですがその方法(関数)をご教示ください。(年月日の表示形式は不問。) なお、「年」を意味する文字列がないので、変換する場合、4.1から12.31までは2006年4月1日から同年12月31日まで、1.1から3.31までは2007年の1月1日から3月31日とします。 はじめデータ・区切り位置コマンドを使おうと思ったのですが、コンマの位置が不揃いでうまく行きませんでした。また入力した者が例えば3月1日を意味する文字列(または数値)をあるときは「3.1」あるときは「3.01」のようにまちまちに入力していて、それも作業が面倒な一因となっています。 A     B(変換表示したい年月日「例」) 4.8   2006/4/8 5.03   2006/5/3 7.28    2006/7/28 12.1    2006/12/1 1.07     2007/1/7 2.15    2007/2/15

  • 生年月日から年齢を計算したい。

    アクセスのクリエを使って、年齢を年・月単位で計算をしたいのですで教えてください。 過去のある月に遡って、生年月日から年齢を出したいのです。 フィールドには、[生年月日]があるのでDateDiff関数を 使えばよいと思うのですが、うまくいきません。ご存知の方、アドバイスをお願いします。

  • 1年後の年月日の返し方

    エクセル関数にて、1年後の年月日の出し方を 教えてください。 例えば。。。  セルA1        セルB1 平成15年10月15日 → 平成16年10月15日            (関数設定したいセル) 宜しくお願いしますm(__)m

  • エクセルで生年月日から年度年齢を計算する方法

    エクセルで生年月日に“S20.12.4”と入力されていて、この方が平成19年4月1日~平成20年3月31日に誕生日を迎えられたら何歳になるかを計算する方法(関数)を教えて下さい。宜しくお願いします。

  • 年月日の自動計算

    以前、特許等の審査請求期限、権利満了期限等の年月日を関数=EDATE()を使って自動計算していたのですが、最近この関数を使用するとエラー表示#NAME?されます。どのようにすれば自動計算できますか?ご教授ください。 (例) 基本年月日 3年後期限 20年後期限 1998/5/15  関数? 関数?       (2001/5/15) (2018/5/15) ←表示希望

  • ユニックス時間(秒)を普通の日付時間(時:分:秒)に直すにはどうすればいいでしょうか。

    こんにちわ。質問させて頂きます。 C言語で、pcap.hによってキャプチャされたパケットのタイムスタンプ(秒)を、標準時間と申しますか、時:分:秒に直したいと考えています。 時間変換の関数で、ctime,asctime,localtime等があるのは分かっているので、localtime関数を使おうと思っているのですが、使ってみたところポインタのタイプが違うのでエラーが出てしまいます。 具体的には、 方法(1):time_t変数に代入してやってみる struct tm *t_st; time_t timer; timer = header->ts; t_st = localtime (&timer); 方法(2):localtime関数に直接放り込む t_st = localtime (&header->ts); 等を試してみたのですが当然アウトでした。 パケットヘッダの中の時間を表すheader->tsをどうにかlocaltime関数で使いたいと考えています。 これを解決する良い方法はあるでしょうか。 ご存知であればご教授いただけないでしょうか。どうぞよろしくお願いします。

  • Exelで時刻計算(秒の数値のみを2倍に)

    start    stop    time 0:03:18  1:49:27  1:46:09 のようにスタートからストップまでのタイムを計算したいのですが、問題は秒の数値が0-30までの2秒単位の数値であることです。 実際のタイムは秒数を2倍して、以下のようになります。 start    stop    time 0:03:36  1:49:54  1:46:18 今のところ、0:03:00と0:00:18のように時・分と秒とを分けて入力し直して秒数だけを2倍し、後で足し合わせていますが、量も多いし面倒です。 この計算をもう少し簡潔に行うにはどうすればいいでしょうか。

専門家に質問してみよう