過去ログ表示


過去ログ 109 を表示

トピック内全 6 記事中の 1 〜 6 番目を表示
[ 最新記事及び返信フォームをトピックトップへ ]
このトピックの全ページ / [0]

無題
(#17632) このトピック中1番目の投稿
(環境: WinXP/IE6)

皆様 こんにちは

基本的なことで申し訳ないのですけど教えてください。


Dim T As Date
Dim overT As Date
  <中略>
If Hour(T + overT) >= Hour(Maxt) Then
この場合で読み込んだTは 26:58なのですけどDATE変換されて
1899/12/31/ 2:58:38になります。一方Maxtでは8:00を設定してあり
上記のif文が正常に成り立たないのです。

この場合にdateタイプの変数を変更すれば良いのかと調べましたけど
時間を扱うにはdate関数しか無いようなのです。

もし解決策がありましたらアドバイスお願い致します。

Re[1]: 無題
(#17633) このトピック中2番目の投稿
(環境: WinXP/IE6)

タイトル【時間比較の変数型について】

申し訳ありません。タイトルが抜けていました。
読みにくくなってすみません

Re[1]: 時間比較の変数型について
(#17636) このトピック中3番目の投稿
(環境: Mac/Camino0.8.2/Thunderbird1.0)

2005/03/26(Sat) 13:05:40 編集(投稿者)

多分,その時刻関数は年・月・日・時・分・秒まで全てが設定されたものかと
思います(処理系によりますが,そういうのが多いと思います).
ですから,時分秒だけしか規定されていないと,最初の年月日が0に設定された
ものと処理系が解釈していると推定します.
おそらくその処理系は1900年1月1日00:00:00を時刻の基準(時刻0)にしてい
るのだと思います.

ご使用になっている処理系の時刻関数の定義をよくお調べになってみてください.

追記
> If Hour(T + overT) >= Hour(Maxt) Then
このステートメントがおかしいですね.
もし「時」だけの処理をするのでしたら
If mod (Hour(T) + Hour(overT), 24) >= Hour(Maxt) Then
でしょう(modの文法はその処理系のものに直してください).

Re[2]: 時間比較の変数型について
(#17637) このトピック中4番目の投稿
(環境: WinXP/IE6)

> おそらくその処理系は1900年1月1日00:00:00を時刻の基準(時刻0)にしてい
> るのだと思います.
>
そうなんです。26:58はエクセルの内部で計算された数値です。[h]:mmのユーザー定義で表示しているのです。

>
> 追記
>> If Hour(T + overT) >= Hour(Maxt) Then
> このステートメントがおかしいですね.
> もし「時」だけの処理をするのでしたら
> If mod (Hour(T) + Hour(overT), 24) >= Hour(Maxt) Then
> でしょう(modの文法はその処理系のものに直してください).
申し訳ありません。この部分をもう少し詳しく教えていただけませんか。
modをヘルプで調べてみますと除算になっていてそれがどう結びつくのか解らないのです。

Re[3]: 時間比較の変数型について
(#17639) このトピック中5番目の投稿
(環境: Mac/Camino0.8.2/Thunderbird1.0)

2005/03/26(Sat) 13:52:28 編集(投稿者)

modは除算ではなく「剰余」です.
mod (A, B)はAをBで割った「余り」を示します.
例:mod(4,3) = 1, mod(18,8)=2, mod(15, 24)=15

まるんさんが意図されたのは,Tの時にoverTの時を足したものがMaxTの時
を超えるかどうかを判断させたいということですよね.
ですから,Hour(T)とHour(overT)の和を24で割った余り,すなわち日付を
超えない場合はそのまま足しあわせたものですし,日付を超えた場合はそれ
が何時になるかを計算する必要があります.
それが mod(Hour(T)+Hour(overT), 24) ということです.

#実際のmodの書式は処理系で調べてくださいね.

で今度は私からの質問ですが,Mozillaアプリケーションとどのような関連が
あるのでしょうか?

Re[4]: 時間比較の変数型について
(#17641) このトピック中6番目の投稿
(環境: WinXP/IE6)

> 2005/03/26(Sat) 13:48:16 編集(投稿者)
>
> modは除算ではなく「剰余」です.
> mod (A, B)はAをBで割った「余り」を示します.
> 例:mod(4,3) = 1, mod(18,16)=2, mod(15, 24)=15
>
> まるんさんが意図されたのは,Tの時にoverTの時を足したものがMaxTの時
> を超えるかどうかを判断させたいということですよね.
> ですから,Hour(T)とHour(overT)の和を24で割った余り,すなわち日付を
> 超えない場合はそのまま足しあわせたものですし,日付を超えた場合はそれ
> が何時になるかを計算する必要があります.
> それが mod(Hour(T)+Hour(overT), 24) ということです.
>
> #実際のmodの書式は処理系で調べてくださいね.

kmshさん
教えて頂いて有難うございます。
気ばかり焦って今気付いたのですけどこちら全然板違いですよね・・・・
申し訳ありませんでした。
済!

このトピックの全ページ / [0]

返信不可


- Child Tree -