

No.7ベストアンサー
- 回答日時:
No.1、3です。
DateDiff("yyyy", A, B) & "年" & DateDiff("yyyy", A, B) & "ヶ月" & _
DateDiff("yyyy", A, B) & "日" & DateDiff("yyyy", A, B) & "時間" & _
DateDiff("yyyy", A, B) & "分" & DateDiff("yyyy", A, B) & "秒"
とりあえず、試しに上記で動作させてみたら時間間隔が短い場合に「0年0ヶ月0日」などの不自然な表示になります。そこで、0の部分は表示されないプログラムを作ってみました。
Public Function 時間間隔(ByVal 時間A As String, ByVal 時間B As String) As String
Dim 間隔_秒 As Double
Dim 間隔_分 As Double
Dim 間隔_時 As Double
Dim 間隔_日 As Double
Dim 間隔_月 As Double
Dim 間隔_年 As Double
間隔_秒 = DateDiff("s", 時間A, 時間B)
If 間隔_秒 <= 60 Then
時間間隔 = 間隔_秒 & "秒"
Exit Function
Else
間隔_秒 = ((間隔_秒 / 60) - Int(間隔_秒 / 60)) * 60
時間間隔 = 間隔_秒 & "秒"
End If
間隔_分 = DateDiff("n", 時間A, 時間B)
If 間隔_分 <= 60 Then
時間間隔 = 間隔_分 & "分" & 時間間隔
Exit Function
Else
間隔_分 = ((間隔_分 / 60) - Int(間隔_分 / 60)) * 60
時間間隔 = 間隔_分 & "分" & 時間間隔
End If
間隔_時 = DateDiff("h", 時間A, 時間B)
If 間隔_時 <= 24 Then
時間間隔 = 間隔_時 & "時間" & 時間間隔
Exit Function
Else
間隔_時 = ((間隔_時 / 24) - Int(間隔_時 / 24)) * 24
時間間隔 = 間隔_時 & "時間" & 時間間隔
End If
間隔_年 = DateDiff("yyyy", 時間A, 時間B)
If 間隔_年 > 1 Then
間隔_月 = DateDiff("m", DateAdd("yyyy", 間隔_年, 時間A), 時間B)
間隔_日 = DateDiff("d", DateAdd("m", 間隔_月, 時間A), 時間B)
時間間隔 = 間隔_年 & "年" & 間隔_月 & "ヶ月" & 間隔_日 & "日" & 時間間隔
Exit Function
Else
間隔_月 = DateDiff("m", 時間A, 時間B)
If 間隔_月 > 1 Then
間隔_日 = DateDiff("d", DateAdd("m", 間隔_月, 時間A), 時間B)
時間間隔 = 間隔_月 & "ヶ月" & 間隔_日 & "日" & 時間間隔
Exit Function
Else
間隔_日 = DateDiff("d", 時間A, 時間B)
時間間隔 = 間隔_日 & "日" & 時間間隔
End If
End If
End Function
上記のプログラムの利用法は下記の通りです。
RET = 時間間隔(時間A, 時間B)
この場合はRETという変数に時間間隔が「何年何ヶ月何日何時間何秒」という形式で、しかも「0年」の場合は「何ヶ月何日何時間何秒」、「0年0ヶ月」の場合は「何日何時間何秒」と無駄な部分を出力しません。1ヶ月の日数が固定されていないので複雑になりましたが参考にしてください。
No.5
- 回答日時:
#1です。
そういえば、ちゃんと確認していませんでしたが・・・
質問者のSimanohitoさんは、「1ヶ月の差」の定義をどう考えているんでしょう?
30日個固定とかだと、単純な差分計算でできますが・・・
暦を意識した場合、
例えば、
「2007/4/26」と「2007/5/27」は「1ヶ月と1日」
「2007/5/26」と「2007/6/27」も「1ヶ月と1日」
と言う風に求めたいなら、単純な計算じゃできないと思いますよ。
4月は30日、5月は31日あるので、
「DateDiff("d",#2007/4/26#,#2007/5/27#)」は「31」で、
「DateDiff("d",#2007/5/26#,#2007/6/27#)」は「32」に
なってしまいますから・・・
「1ヶ月は30日固定」だとした場合なら、
前者は「1ヶ月と1日」で、後者は「1ヶ月と2日」になりますね。
No.4
- 回答日時:
(1)年月日時分秒を秒に変換する関数を作る
(2)秒を年月日時分秒に変換する関数を作る
(3)それぞれを(1)で作った関数で秒に直して、引き算する
(4)引き算された結果を(2)で作った関数で年月日時分秒に直す
ってだけじゃないんですか?
例えば今日なら、2007年04月26日ですから
2006*365+2006/4-2006/100+2006/400-(2006/1600 -1) 日が2006年12月31日までの日数
うるう年は、4年に一回あって、100年に一回なくて、400年に一回あって、1600年に一回ない(んだけど1600年はうるう年だったので1足す)
2007年に入ってからも同様に
31+28+31 +26 (3月いっぱいの日数 +26日)
一日は何秒か・一時間は何秒か・一分は何秒か
・・・それぞれわかってるのですから、簡単でしょ?

No.3
- 回答日時:
>複数回使用してという複数回とはどのようにしようしたらよろしいのでしょうか。
1.DateDiff("yyyy",A,B)
2.DateDiff("m",A,B)
3.DateDiff("d",A,B)
4.DateDiff("h",A,B)
5.DateDiff("n",A,B)
6.DateDiff("s",A,B)
1つ目で日付Aと日付Bの間が何年か、2つ目で何ヶ月か、3つ目以降が何日か、何時間か、何分か、何秒かとなっています。これらの関数で求めた結果をつなげれば良いです。どうやってつなげるのかはご自分で考えたり調べたりして下さい。文字列の連結はVBの基礎の基礎程度なので分からない場合は勉強不足です。VB6.0は分かり易く解説しているサイトが多いのでそういったサイトを利用して勉強して下さい。
No.2
- 回答日時:
> このAとBの差が何年何ヶ月何日何時間何秒差があるかを求めたいです
「何年何ヶ月」が無ければ結構楽なんですけどね・・・
#日までは、1日=24時間。1時間=60分。1分=60秒と決まってますので、単純な引き算と割り算でできますが、
#1ヶ月=28日~31日。1年=365or366日と変わりますから・・・
DateAdd関数で、秒単位、分単位、時単位、日単位、月単位、年単位の順に1づつ加算していって、同じになるまで、各々何回加算できるかを調べるとか・・・
例えば、
> A行に2007/04/18 10:11:50と書かれていて
> B行に2007/04/19 12:13:25と書かれていた場合
だと、
先ずAに秒を加算していくと、35回加算すると、
Aは「2007/04/18 10:12:25」となって、秒が一致。
次に、分を1回加算すると、
Aは「2007/04/18 10:13:25」となって、分が一致。
次に、時を2回加算すると、
Aは「2007/04/18 12:13:25」となって、時が一致。
次に、日を1回加算すると、
Aは「2007/04/19 12:13:25」となって、日が一致。
次に、月を0回加算すると、
Aは「2007/04/19 12:13:25」となって、月が一致。
次に、年を0回加算すると、
Aは「2007/04/19 12:13:25」となって、年が一致。
で、0年0ヶ月1日 2時間1分35秒
とか・・・

No.1
- 回答日時:
DateDiff(時間間隔の単位,A,B)
上記の関数で時間Aから時間Bまでの経過時間が分かります。ちなみに「時間間隔の単位」というのは
"yyyy"=年
"m"=月
"d"=日
"h"=時
"n"=分
"s"=秒
となります。1つの式で何年何ヶ月何日何時間何秒差を求めることは出来ないようなので複数回DateDiff関数を使用して求めてください。
この回答への補足
ご連絡が大変遅くなりまして申し訳ございません。
上記回答ありがとうございました。
ただ複数回使用してという複数回とはどのようにしようしたらよろしいのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- 労働相談 有給休暇使用時の賃金の計算方法について 5 2022/04/04 00:02
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- 学校 大学の科目を教えている先生を変えたい 2 2022/04/26 16:32
- 簿記検定・漢字検定・秘書検定 4月から商業高校の会計科に通う予定の中学生です。現在春休みで、簿記検定3級を取得しようと考えており、 1 2023/03/04 14:40
- その他(コンピューター・テクノロジー) 50台の織機から回転数を取得・集計しモニターに表示したい 2 2022/11/05 15:48
- その他(プログラミング・Web制作) パイソンのプログラミングについての質問です 2 2023/05/22 12:39
- Java Java 石取りゲーム 3 2023/02/02 15:46
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- ハローワーク・職業安定所 ハローワークの求人票と、ホームページの記載の相違 2 2023/06/25 14:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キーコード ?と/が同じですが...
-
複数関数からの戻り値returnの指定
-
If 条件式
-
関数の定義
-
関数
-
無償BorlandC++5.5でAPI(SDK)...
-
fetchでreturnで戻り値
-
外部から読み込んだテキストを...
-
円を増やしたりする
-
このプログラムはどういう意味...
-
DataGridでクリックされた行と...
-
PHPからFlashにXMLをそのまま渡...
-
全国のイベント情報
-
AS3.0でボタン処理をまとめて書...
-
ソフトウェアキーボードを作るには
-
AS3.0で複数のButtonコンポーネ...
-
ListboxとTextBoxについての質問
-
フラッシュ、ロールオーバーで...
-
インスタンスをまとめて生成?
-
MATLAB で配列みたいなものを
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
LRESULTとHRESULT
-
#define 文
-
TextChangeイベントが発生しない
-
ifdefとenum
-
クラス内に自作のイベントを定...
-
PHP + MySQL で登録時に重複チ...
-
時間差を取得結果を求めるには
-
アクティブなウィンドウのみ、...
-
callbackってなんですか。
-
【javaScript】KeyboardEventで...
-
プレロードイメージについて
-
Javascriptのreturnについての...
-
char[]とchar*
-
SetTimer関数について
-
isLoading:Boolean = trueの使い道
-
PHP requireの後にJS実行
-
functionのパラメータの渡し方...
-
【JavaScript】イベント伝播の...
おすすめ情報