C#で秒を「時:分:秒:ミリ秒」形式の時間に変換する最良の方法
C#プログラミングでは、経過秒数を読みやすい「時:分:秒:ミリ秒」形式に変換したい場面がよくあります。この記事では、TimeSpan構造体とstring.Formatメソッドを組み合わせた、最もシンプルで推奨される変換方法をコード例とともに解説します。
DateTimeとは
DateTimeは、intやdoubleと同じく値型(構造体)として定義されています。System名前空間に属し、mscorlib.dllアセンブリに含まれています。また、IComparable、IFormattable、IConvertible、ISerializable、IEquatableなどのインターフェースを実装しており、日付や時刻の比較や書式設定を柔軟に行えます。
DateTimeオブジェクトには、Day(日)、Month(月)、Year(年)、Hour(時)、Minute(分)、Second(秒)、DayOfWeek(曜日)など、日付と時刻に関するさまざまなプロパティが用意されています。
TimeSpanとは
TimeSpan構造体は、時間間隔(2つの時刻の差)を表します。この差は、日数・時間・分・秒という単位で測定されます。2つのDateTimeオブジェクトを引き算することで得られる差分はTimeSpan型となり、これにより2つの日付の間隔を簡単に求められます。
さらに、TimeSpanクラスには以下の静的メソッドが提供されており、指定した単位から直接TimeSpanオブジェクトを生成できます。
- FromDays … 日数から生成
- FromHours … 時間から生成
- FromMinutes … 分から生成
- FromSeconds … 秒から生成
- FromMilliseconds … ミリ秒から生成
例1:3752秒を変換する
TimeSpan.FromSecondsメソッドで秒数からTimeSpanオブジェクトを作成し、string.Formatで書式化します。「D2」は2桁、「D3」は3桁のゼロ埋めを意味する標準書式指定子です。
static void Main(string[] args){
// 3752秒からTimeSpanオブジェクトを生成
TimeSpan t = TimeSpan.FromSeconds(3752);
// 時:分:秒:ミリ秒の形式に整形
string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
t.Hours,
t.Minutes,
t.Seconds,
t.Milliseconds);
System.Console.WriteLine(answer);
Console.ReadLine();
}出力結果
01h:02m:32s:000ms
3752秒は「1時間2分32秒」と正しく変換されていることがわかります。
例2:6秒を変換する
同じコードで、変換対象の秒数だけを変更してみます。
static void Main(string[] args){
// 6秒からTimeSpanオブジェクトを生成
TimeSpan t = TimeSpan.FromSeconds(6);
// 時:分:秒:ミリ秒の形式に整形
string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
t.Hours,
t.Minutes,
t.Seconds,
t.Milliseconds);
System.Console.WriteLine(answer);
Console.ReadLine();
}出力結果
00h:00m:06s:000ms
このように、TimeSpan.FromSecondsとstring.Formatを組み合わせれば、任意の秒数を常に一定の桁数で整った「時:分:秒:ミリ秒」形式に変換できます。手動での剰余計算が不要になるため、可読性と保守性の高いコードになります。
-
Tkinterでテーブルにデータを表示する最良の方法!Treeviewウィジェットの使い方を解説
はじめに:データを表形式で表示するには 一般的に、データは表形式で表現されます。表は行と列の集合で構成され、データは行・列ごとに順序立てて格納されます。 例えば、学生情報を管理するTkinterアプリケーションを開発しているとしましょう。表の構造は、学生の「名前(First Name)」「苗字(Last Name)」「学籍番号(Roll No)」を保存するための3つの列で構成されます。 このような表形式のデータを表示する場合、Tkinterが提供する ttk.Treeview ウィジェットを使うのが最もシンプルかつ効果的な方法です。Treeviewを使えば、複数の行と列からなるデータを簡単に表
-
重複ファイルを管理する最良の方法とは?初心者向け徹底ガイド
大容量HDDの時代でも、重複ファイルは悩みの種最近のパソコンには大容量のハードディスクが搭載されており、動画や音楽ファイル、数百枚に及ぶ写真など、さまざまなデータを自由に保存できます。しかし、どれほど大容量であっても、いつか必ず空き容量が尽きてしまうものです。そんなとき、慌ててプログラムをアンインストールする必要はありません。まず試すべきなのは、重複ファイルの整理と管理です。重複ファイルとは何か?ハードディスクにファイルを保存している限り、重複ファイルは避けて通れません。気づかないうちに少しずつ蓄積していきます。例えば、デジカメやスマートフォンの写真をパソコンに取り込む際、同じ写真を別々のフォ