• ベストアンサー

日時を逆算して**前に登録したか表示させる

データの書き込まれた日時から現在時刻を逆算して下記のように表示させるには どのようにしたら良いのでしょうか? 60分未満は**分で表示 1時間以上24時間未満は**時間で表示 1日以上30日未満は**日で表示 30日以上は****年**月**日で表示 どうか宜しくお願い致します。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

A1に例えば2011/11/30 13:25 のように日時が入力されているとしたら、次の式のようにします。 =IF(A1="","",IF(NOW()-A1<"1:00"*1,TEXT(NOW()-A1,"mm分"),IF(NOW()-A1<"24:00"*1,TEXT(NOW()-A1,"h時間"),IF(NOW()-A1<30,TEXT(NOW()-A1,"d日"),DATEDIF(A1,NOW(),"Y")&"年"&DATEDIF(A1,NOW(),"YM")&"月"&DATEDIF(A1,NOW(),"MD")&"日"))))

mutu19730808
質問者

お礼

お礼が遅れて申し訳ありませんでした。 参考書にも記載がなくgoogleで検索を掛けても参考になる ものがなくて困っていたので助かりました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

極単純に if 60分未満 then **分で表示 else if 1時間以上24時間未満 then **時間で表示 else if 1日以上30日未満 then **日で表示 else if 30日以上 then ****年**月**日で表示 という構造にするだけですが。 条件と判定の順番から if 60分未満 then **分で表示 else if 24時間未満 then **時間で表示 else if 30日未満 then **日で表示 else ****年**月**日で表示 とも書けるでしょう。 大抵のプログラム言語には、時刻を扱うクラスとか関数が用意されています。それを使えば、2つの日時の差や比較が簡単に求められます。 そうでなくても、時刻を表す数値を使って求められます。大抵はある日時からの累積秒が得られます。 引き算すれば2時刻間の秒数がわかるので、必要に応じて分や日に変換すればいいです。 CGIというのは仕組みの名前であって、言語の名前ではありません。ほぼ全ての言語がCGIと成りえます。 表示とか比較とかをどうするかは使用言語やOS、プログラムの構成によっても変わってきます。 なので、今ある情報だけでは、具体的な方法は答えられません。 そんなに難しい内容ではないので、上のヒントで作ってみてください

mutu19730808
質問者

お礼

大変参考になりました。

mutu19730808
質問者

補足

私の認識不足でご迷惑をお掛けしました。 私自身、CGI=Perlだと思っておりました・・・・

関連するQ&A