C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 2つの時刻の差


(過去ログ 78 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■46520 / inTopicNo.1)  2つの時刻の差
  
□投稿者/ man (1回)-(2010/02/04(Thu) 15:41:39)

分類:[.NET 全般] 

VB2008を使用しています。
以下のようなプログラムを組みたいと思っております。

Button1を押すとLabel1にそのときの時刻を表示する。
Button2を押すと同じようにLabel2にそのときの時刻を表示し、同時にLabel3に「Label2の時刻 - Label1の時刻」を表示する。

2つの時刻を表示するところまではできたのですが、その差を求めるやり方がわかりません。
どなたか教えていただけないでしょうか?
下記は現在のコードです。


Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = DateTime.Now.ToString("hh,mm,ss,") & DateTime.Now.Millisecond
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Label2.Text = DateTime.Now.ToString("hh,mm,ss,") & DateTime.Now.Millisecond


End Sub
End Class


またこのコードだと、例えば13時20分30秒456が1,20,30,456と表示されてしまいます。
これを13,20,30,456と午前・午後の区別をつけれたらと思うのですが、それは可能でしょうか?
引用返信 編集キー/
■46521 / inTopicNo.2)  Re[1]: 2つの時刻の差
□投稿者/ 魔界の仮面弁士 (1471回)-(2010/02/04(Thu) 15:55:49)
No46520 (man さん) に返信
> 2つの時刻を表示するところまではできたのですが、その差を求めるやり方がわかりません。

時刻を Label 表示用に文字列化する際に、
元の日付型の値も保持しておきましょう。その方が計算しやすいですよ。


Private 時刻1 As Date
Private 時刻2 As Date

Private Sub Button1_Click() Handles Button1.Click
    時刻1 = Now()
    Label1.Text = 時刻1.ToString("HH:mm:ss.ffff")
End Sub

Private Sub Button2_Click() Handles Button2.Click
    時刻2 = Now()
    Label2.Text = 時刻2.ToString("HH:mm:ss.ffff")

    Dim 時間差 = 時刻2 - 時刻1
    Label3.Text = 時間差.ToString()
End Sub

引用返信 編集キー/
■46523 / inTopicNo.3)  Re[1]: 2つの時刻の差
□投稿者/ こくぶん (41回)-(2010/02/04(Thu) 16:18:56)
No46520 (man さん) に返信

> またこのコードだと、例えば13時20分30秒456が1,20,30,456と表示されてしまいます。
> これを13,20,30,456と午前・午後の区別をつけれたらと思うのですが、それは可能でしょうか?

小文字の"hh"は12時間表記です。
大文字"HH"(24時間表記)にすれば「13」になると思います。

http://msdn.microsoft.com/ja-jp/library/8kb3ddd4.aspx
引用返信 編集キー/
■46524 / inTopicNo.4)  Re[2]: 2つの時刻の差
□投稿者/ man (3回)-(2010/02/04(Thu) 16:24:33)
No46521 (魔界の仮面弁士 さん) に返信
> ■No46520 (man さん) に返信
>>2つの時刻を表示するところまではできたのですが、その差を求めるやり方がわかりません。
>
> 時刻を Label 表示用に文字列化する際に、
> 元の日付型の値も保持しておきましょう。その方が計算しやすいですよ。
>
>
> Private 時刻1 As Date
> Private 時刻2 As Date
>
> Private Sub Button1_Click() Handles Button1.Click
> 時刻1 = Now()
> Label1.Text = 時刻1.ToString("HH:mm:ss.ffff")
> End Sub
>
> Private Sub Button2_Click() Handles Button2.Click
> 時刻2 = Now()
> Label2.Text = 時刻2.ToString("HH:mm:ss.ffff")
>
> Dim 時間差 = 時刻2 - 時刻1
> Label3.Text = 時間差.ToString()
> End Sub


ありがとうございます、うまくいきました。
コンマ秒を2桁にしたいときにはffff→ffにすればいいんですよね?
このコードだと、Label3に表示される差のコンマ秒が小数点7桁までいってしまうのですが、こちらも2桁にしたいときはどうすればいいですか?
引用返信 編集キー/
■46525 / inTopicNo.5)  Re[2]: 2つの時刻の差
□投稿者/ man (4回)-(2010/02/04(Thu) 16:25:31)
No46523 (こくぶん さん) に返信
> ■No46520 (man さん) に返信
>
>>またこのコードだと、例えば13時20分30秒456が1,20,30,456と表示されてしまいます。
>>これを13,20,30,456と午前・午後の区別をつけれたらと思うのですが、それは可能でしょうか?
>
> 小文字の"hh"は12時間表記です。
> 大文字"HH"(24時間表記)にすれば「13」になると思います。
>
> http://msdn.microsoft.com/ja-jp/library/8kb3ddd4.aspx

なるほど!
勉強になりました!!
ありがとうございます。
引用返信 編集キー/
■46531 / inTopicNo.6)  Re[3]: 2つの時刻の差
□投稿者/ 魔界の仮面弁士 (1472回)-(2010/02/04(Thu) 17:30:38)
No46524 (man さん) に返信
> このコードだと、Label3に表示される差のコンマ秒が小数点7桁までいってしまうのですが、こちらも2桁にしたいときはどうすればいいですか?

残念ながら TimeSpan 型に対する書式は用意されていないので、
時間差.Milliseconds や 時間差.TotalMilliseconds 等を
個別に処理する事になります。


ただし、その値が 24 時間に満たないのであれば、
Date 型の時刻部として扱うことで対処可能です。

Label3.Text = 時間差.ToString()
Label4.Text = Today().Add(時間差).ToString("HH:mm:ss.ff")
引用返信 編集キー/
■46532 / inTopicNo.7)  Re[4]: 2つの時刻の差
□投稿者/ man (6回)-(2010/02/04(Thu) 18:10:46)
No46531 (魔界の仮面弁士 さん) に返信
> ■No46524 (man さん) に返信
>>このコードだと、Label3に表示される差のコンマ秒が小数点7桁までいってしまうのですが、こちらも2桁にしたいときはどうすればいいですか?
>
> 残念ながら TimeSpan 型に対する書式は用意されていないので、
> 時間差.Milliseconds や 時間差.TotalMilliseconds 等を
> 個別に処理する事になります。
>
>
> ただし、その値が 24 時間に満たないのであれば、
> Date 型の時刻部として扱うことで対処可能です。
>
> Label3.Text = 時間差.ToString()
> Label4.Text = Today().Add(時間差).ToString("HH:mm:ss.ff")

うまくいきました!!
ありがとうございました!!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -