.NET TIPS

秒数を「hh:mm:ss」形式の文字列にするには?

デジタルアドバンテージ 遠藤 孝信
2005/07/22

 計算などにより得られた秒数を、ユーザーに分かりやすい「hh:mm:ss」の形式の文字列にするには、TimeSpan構造体(System名前空間)のインスタンスを作成し、そのToStringメソッドを呼び出せばよい。TimeSpan構造体は時間間隔を表すためのものである。

 TimeSpan構造体には、次のような整数型のパラメータを取るコンストラクタが用意されている。

TimeSpan(時間数、分数、秒数)

 このコンストラクタを利用し、例えば次のようにして1000秒を表すTimeSpanオブジェクトを作成することができる。

TimeSpan ts = new TimeSpan(0, 0, 1000);

 TimeSpan構造体のToStringメソッドは、その時間間隔から「hh:mm:ss」の形式の文字列を出力する(区切り文字の「:」は変更できない)。

string hms = ts.ToString(); // hmsの内容「00:16:40」

 ただし時間間隔が24時間を超えるような場合には、「hh:mm:ss」の「hh」の部分が「日数.hh」の形式となるので注意が必要だ。これについては以下のサンプル・プログラムの出力をご覧いただきたい。

// timeformat.cs

using System;

public class SecondsToHHMMSS {
  static void Main() {

    int second = 1000;
    TimeSpan ts = new TimeSpan(0, 0, second);
    string hms = ts.ToString();
    Console.WriteLine(hms); // 出力「00:16:40」

    ts = new TimeSpan(23, 0, 0);
    Console.WriteLine(ts); // 出力「23:00:00」

    ts = new TimeSpan(24, 0, 0);
    Console.WriteLine(ts); // 出力「1.00:00:00」

    ts = new TimeSpan(25, 0, 0);
    Console.WriteLine(ts); // 出力「1.01:00:00」

    // システム起動後の経過時間
    int millisec = Environment.TickCount; // ミリ秒単位
    ts = new TimeSpan(0, 0, 0, 0, millisec);
    string hmsm = ts.ToString();
    Console.WriteLine(hmsm); // 出力例「1.23:30:14.3590000」
  }
}

// コンパイル方法:csc timeformat.cs
秒数を「hh:mm:ss」の形式で表示するC#のサンプル・プログラム(timeformat.cs)
 
' timeformat.vb

Imports System

Public Class SecondsToHHMMSS
  Shared Sub Main()

    Dim second As Integer = 1000
    Dim ts As TimeSpan = new TimeSpan(0, 0, second)
    Dim hms As String = ts.ToString()
    Console.WriteLine(hms) ' 出力「00:16:40」

    ts = new TimeSpan(23, 0, 0)
    Console.WriteLine(ts) ' 出力「23:00:00」

    ts = new TimeSpan(24, 0, 0)
    Console.WriteLine(ts) ' 出力「1.00:00:00」

    ts = new TimeSpan(25, 0, 0)
    Console.WriteLine(ts) ' 出力「1.01:00:00」

    ' システム起動後の経過時間

    Dim millisec As Integer = Environment.TickCount ' ミリ秒単位
    ts = new TimeSpan(0, 0, 0, 0, millisec)
    Dim hmsm As String = ts.ToString()
    Console.WriteLine(hmsm) ' 出力例「1.23:30:14.3590000」

  End Sub
End Class

' コンパイル方法:vbc timeformat.vb
秒数を「hh:mm:ss」の形式で表示するVB.NETのサンプル・プログラム(timeformat.vb)

 サンプル・プログラムの最後では、ミリ秒数からTimeSpanオブジェクトを作成し、ToStringメソッドにより文字列化した例を示している。Environmentクラス(System名前空間)のTickCountプロパティは、システム起動後の経過時間をミリ秒単位で取得するためのものだ。

 ミリ秒数からTimeSpanオブジェクトを作成するには、次のような5つの整数型のパラメータを取るコンストラクタを利用する。

TimeSpan(日数、時間数、分数、秒数、ミリ秒数)

 サンプル・プログラムの出力例にもあるように、1秒未満の秒数を含んだTimeSpanオブジェクトをToStringメソッドにより文字列化する場合には、秒の部分が小数点第7位まで表示される。

 なお、本稿ではToStringメソッドによる簡易な文字列化の方法について述べたが、TimeSpan構造体には日数や秒数などの個々の値を取り出すためのプロパティが一通りそろっているので、それらを利用してより複雑な書式の文字列を作り出すのも難しくはない。End of Article

カテゴリ:クラス・ライブラリ 処理対象:日付と時刻
使用ライブラリ:TimeSpan構造体(System名前空間)
使用ライブラリ:Environmentクラス(System名前空間)
 
この記事と関連性の高い別の.NET TIPS
日時や時間間隔の加減算を行うには?
[Silverlight 2]タイマを利用するには?
UNIX時間を求めるには?
処理時間を正確に計測するには?
システムの稼働時間を取得するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間