秒数を「hh:mm:ss」形式に変換するキレイな方法 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 太一  (社会人) 投稿日時 2012/1/17 10:09:00
shuさん、YuOさん、有り難うございます。

お二人とも綺麗なコードですね。

6行だったコードが、たった2行になってしまうのですね・・・

まだまだ勉強が必要ですね。




投稿者 YuO  (社会人) 投稿日時 2012/1/16 11:07:11
Dim span = TimeSpan.FromSeconds(Int32.Parse(TextBox2.Text))
TextBox2.Text = span.ToString()
でしょうか。個人的にはコンストラクタよりFrom系のメソッド使用をお勧めしたいところ。
# From系の方が値の解釈方法がわかりやすいので。

日単位の表示をしたくないのであれば,
TextBox2.Text = String.Format("{0}:{1:mm\:ss}", span.Days * 24 + span.Hours, span)
と,その部分は自分で書く必要があります。

References)
MSDN: FromSeconds メソッド
http://msdn.microsoft.com/ja-jp/library/system.timespan.fromseconds.aspx
MSDN: ToString メソッド (String)
http://msdn.microsoft.com/ja-jp/library/dd992632.aspx
MSDN: 標準の時間間隔書式指定文字列
http://msdn.microsoft.com/ja-jp/library/ee372286.aspx
MSDN: カスタム時間間隔書式指定文字列
http://msdn.microsoft.com/ja-jp/library/ee372287.aspx
投稿者 shu  (社会人) 投稿日時 2012/1/16 10:38:14
        Dim tm As New TimeSpan(0, 0, CInt(TextBox1.Text))
        TextBox2.Text = tm.ToString()

こんなんでどうでしょう?
投稿者 太一  (社会人) 投稿日時 2012/1/16 10:04:02
例えば、秒数70は「00:01:10」という風に時間形式に変換したいと思っています。

70秒→00:01:10


一応作れてはいるのですが、無駄が多いような気がして、もっと簡潔にする方法はないかと思いました質問させて頂きました。


よろしくお願いいたします。

Vb2010/windows7




TextBox2.Textに70が入っています。

Dim a As Integer = Int(TextBox2.Text / 60)   '秒から分に変換 余りは切り捨て
Dim b As Integer = TextBox2.Text Mod 60      '秒を計算
Dim c As Integer = Int(a / 60)                  '分から時間に変換 余りは切り捨て
Dim d As Integer = a Mod 60                      '分を計算

TextBox2.Text = c & ":" & d & ":" & b
TextBox2.Text = TimeValue(TextBox2.Text)   '時間形式に変換